2009-06-08 64 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