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

问题描述 投票:0回答:4

我有两个IBActions。在一个动作中,我正在加载UIWebview以显示我的包中的PDF文件。点击另一个按钮,整个UIWebView应该从superview中删除。

我尝试过使用:

[webview removeFromSuperview];

webview.hidden=YES;

这些都不起作用。他们隐藏了我的UIWebView一秒钟,然后又出现了。

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

objective-c ios cocoa-touch uiwebview
4个回答
1
投票

你有没有在界面生成器中将Referencing Outlet连接到类的@property

如果你不这样做,那么你可能无法在源代码中找到UIWebView。为了你的缘故,你应该检查webview的指针,如果它是nil长期,有100%你没有相互连接。


0
投票

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


0
投票

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

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

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

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

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

如何排序这个问题,如果你真的不需要web视图使用正常的,否则你必须隐藏该视图中的所有标签。希望能帮上忙


0
投票

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

DispatchQueue.main.async {
            print("\nremoving webview\n")
            self.myWebView.stringByEvaluatingJavaScript(from: "document.body.innerHTML='';")
            self.myWebView.removeFromSuperview()
        }
© www.soinside.com 2019 - 2024. All rights reserved.