如何在操作完成后隐藏或删除UIwebview?

时间:2012-07-17 06:40:52

标签: objective-c ios cocoa-touch uiwebview

我有两个IBActions。在一个操作中,我正在加载UIWebview以显示我的包中的PDF文件。单击其他按钮后,整个UIWebView应从superview中删除。

我尝试过使用:

[webview removeFromSuperview];

webview.hidden=YES;

这些都不起作用。他们隐藏了我的UIWebView一秒钟,但之后再次出现。

是的 我以编程方式创建了UIWEBVIEW,并在界面文件中添加了UIWebvieWDelegate。但是在初始化UIWebView时我没有设置webview.delegate = self;这是问题吗?

4 个答案:

答案 0 :(得分:1)

您是否已将Referencing Outlet Interface Builder 中的班级@property相关联?

如果您不这样做,可能是为什么您无法访问源代码中的UIWebView。为了您的利益,您应该检查webview的指针,如果它是nil长期存在,那么100%您没有相互连接它们。

答案 1 :(得分:0)

好吧,这似乎是老问题,但我也可以看到有近千人已经查看它,并可能有同样的问题。所以我对任何人的回答我将来都有同样的问题。 我只是做了一些微笑,并希望在某个动作时隐藏Web视图。 我试过以下

-(void)viewDidLoad
{
    [super viewDidLoad];
    process = [ProcessingData new];
    [DetailView setHidden:YES];
    DetailView.hidden = YES;
    [DetailView removeFromSuperview];
    self.DetailView = nil;
}

然而它仍然无法正常工作,因为我在WebView中几乎没有标签在视图加载时不会消失,当我查看“StoryBoard”时我注意到标签不是

enter image description here

你可以在WebView下看到libel的层次结构,它们是主视图的子视图,它们假设与表视图层次结构相同

所以在可能的情况下,WebView正在隐藏,但标签不是因为它们不是Webview的一部分。

如何排序此问题,如果您真的不需要使用正常的Web视图,否则您必须隐藏该视图中的所有标签。希望那是帮助

答案 2 :(得分:0)

我试图做这样的事情。对我有用的解决方案是将UIview对象添加为子视图以使用webview框架进行查看并将其置于顶部....当您想要使uiwebview可见时,只需从superview中删除该uiview对象。

答案 3 :(得分:0)

我不知道obj-​​c,但仍然迅速发布了一个对我有用的解决方案。基本上,您必须使用主线程删除webview。

DispatchQueue.main.async {
            print("\nremoving webview\n")
            self.myWebView.stringByEvaluatingJavaScript(from: "document.body.innerHTML='';")
            self.myWebView.removeFromSuperview()
        }