我有两个IBActions
。在一个动作中,我正在加载UIWebview
以显示我的包中的PDF
文件。点击另一个按钮,整个UIWebView
应该从superview中删除。
我尝试过使用:
[webview removeFromSuperview];
和
webview.hidden=YES;
这些都不起作用。他们隐藏了我的UIWebView
一秒钟,然后又出现了。
是我以编程方式创建了WEBVIEW并在接口文件中添加了UIWebvieWDelegate。但是在初始化UIWebView时我没有设置webview.delegate = self;这是问题吗?
你有没有在界面生成器中将Referencing Outlet
连接到类的@property
?
如果你不这样做,那么你可能无法在源代码中找到UIWebView
。为了你的缘故,你应该检查webview
的指针,如果它是nil
长期,有100%你没有相互连接。
我试图做这样的事情。对我有用的解决方案是将UIview对象添加为子视图以使用webview框架进行查看并将其置于顶部....当您想要使uiwebview可见时,只需从superview中删除该uiview对象。
好吧,这似乎是老问题,但我也可以看到有近千人已经查看它,并可能有同样的问题。所以我对任何人的回答我将来都有同样的问题。我只是做了一些微笑,并希望在某个动作时隐藏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视图使用正常的,否则你必须隐藏该视图中的所有标签。希望能帮上忙
我不知道obj-c但仍然发布了一个对我有用的解决方案。基本上你必须使用主线程来删除webview。
DispatchQueue.main.async {
print("\nremoving webview\n")
self.myWebView.stringByEvaluatingJavaScript(from: "document.body.innerHTML='';")
self.myWebView.removeFromSuperview()
}