2009-06-08 61 views
3

我想使用UIWebView對象來針對本地網頁運行自定義javascript方法。我可以這樣做,但我希望在後臺執行此操作,我的意思是,在顯示導航控制器或任何其他內容時,加載網頁並在其上調用JavaScript方法。在後臺使用UIWebView

怎麼辦?

回答

3

我不知道你的意思是「在後臺」,但如果你只是想在一個UIWebView不可見的,這個屬性是適用於所有的UIView對象:

@property(nonatomic, getter=isHidden) BOOL hidden 

Straght從class reference

隱藏視圖從其窗口中消失,並且不會接收輸入事件。然而,它保留在 其超級瀏覽子列表 中,並且像往常一樣參與 自動調整。隱藏 與子視圖隱藏 這些子視圖和任何視圖 他們可能具有的後果。這種效果是隱含的,並且不會改變 後代的隱藏狀態。

隱藏當前第一響應者窗口的視圖 導致視圖的下一個有效關鍵視圖變爲 新的第一響應者。

此屬性的值反映 接收器的狀態僅 不認爲 層次佔 接收器的祖先的狀態。因此這個屬性可以是 如果接收器被隱藏,因爲 隱藏了一個祖先。

-2

一旦你初始化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]; 
} 
+1

這是非常危險的。 'UIWebView'是一個只有主線程的類,不應該從後臺線程調用。 – rpetrich 2013-06-07 20:14:36

3

我能夠做到這一點只是通過在內存中創建一個Web視圖,並從不顯示它。它仍然存在,工作正常。

self.backgroundWebView = [[[UIWebView alloc] initWithFrame:CGRectZero] autorelease]; 
[self.backgroundWebView loadRequest:[NSURLRequest requestWithURL:myURL]]; 
+0

嗨@Dave Batton,如何在swift中寫這個?謝謝。 – user1219310 2015-04-29 07:03:13