我想使用UIWebView對象來針對本地網頁運行自定義javascript方法。我可以這樣做,但我希望在後臺執行此操作,我的意思是,在顯示導航控制器或任何其他內容時,加載網頁並在其上調用JavaScript方法。在後臺使用UIWebView
怎麼辦?
我想使用UIWebView對象來針對本地網頁運行自定義javascript方法。我可以這樣做,但我希望在後臺執行此操作,我的意思是,在顯示導航控制器或任何其他內容時,加載網頁並在其上調用JavaScript方法。在後臺使用UIWebView
怎麼辦?
我不知道你的意思是「在後臺」,但如果你只是想在一個UIWebView不可見的,這個屬性是適用於所有的UIView對象:
@property(nonatomic, getter=isHidden) BOOL hidden
Straght從class reference :
隱藏視圖從其窗口中消失,並且不會接收輸入事件。然而,它保留在 其超級瀏覽子列表 中,並且像往常一樣參與 自動調整。隱藏 與子視圖隱藏 這些子視圖和任何視圖 他們可能具有的後果。這種效果是隱含的,並且不會改變 後代的隱藏狀態。
隱藏當前第一響應者窗口的視圖 導致視圖的下一個有效關鍵視圖變爲 新的第一響應者。
此屬性的值反映 接收器的狀態僅 不認爲 層次佔 接收器的祖先的狀態。因此這個屬性可以是 如果接收器被隱藏,因爲 隱藏了一個祖先。
一旦你初始化webview,你可以輕鬆地啓動一個後臺線程,該視圖工作並加載頁面。
[NSThread detachNewThreadSelector:@selector(connectToServer) toTarget:self
withObject:nil];
.....
(void) connectToServer
{
// in a different thread....so we need a autoreleasepool
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
... // do your stuff
// load HTML on webview
[autoreleasepool release];
}
我能夠做到這一點只是通過在內存中創建一個Web視圖,並從不顯示它。它仍然存在,工作正常。
self.backgroundWebView = [[[UIWebView alloc] initWithFrame:CGRectZero] autorelease];
[self.backgroundWebView loadRequest:[NSURLRequest requestWithURL:myURL]];
嗨@Dave Batton,如何在swift中寫這個?謝謝。 – user1219310 2015-04-29 07:03:13
這是非常危險的。 'UIWebView'是一個只有主線程的類,不應該從後臺線程調用。 – rpetrich 2013-06-07 20:14:36