簡體   English   中英

在后台使用UIWebView

[英]Use a UIWebView in the background

我想使用UIWebView對象來對本地網頁運行自定義javascript方法。 我可以這樣做,但我想在后台進行,我的意思是,當我顯示導航控制器或任何其他內容時,加載網頁並調用它們的javascript方法。

怎么會這樣?

我只能通過在內存中創建Web視圖並且從不顯示它來實現此目的。 它仍然存在並且工作正常。

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

我不確定“在后台”是什么意思,但如果你只是想讓UIWebView不可見,那么所有UIView對象都可以使用這個屬性:

@property(nonatomic, getter=isHidden) BOOL hidden

直接來自班級參考

隱藏視圖從其窗口中消失,不會接收輸入事件。 但它仍保留在超級視圖的子視圖列表中,並像往常一樣參與自動調整。 使用子視圖隱藏視圖會隱藏這些子視圖以及它們可能具有的任何視圖后代。 這種效果是隱含的,不會改變接收者后代的隱藏狀態。

隱藏作為窗口當前第一響應者的視圖會導致視圖的下一個有效鍵視圖成為新的第一響應者。

此屬性的值僅反映接收方的狀態,並不考慮視圖層次結構中接收方祖先的狀態。 因此,如果由於隱藏了祖先而隱藏了接收器,則此屬性可以為NO。

一旦你初步化了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];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM