我正在构建一个 Web 浏览器,当我添加另一个选项卡时,它会创建一个新的 UIWebview。每个新 View 在创建时都会被赋予一个标签,这样我就可以调用特定的 View 。当我将 subview 调用到前面时,它不响应加载请求。这就是我将 subview 带到前面的方式
-(void) selectionMade:(id)sender
{
//find view with same tag num as button pushed
for (UIView *view in self.webView.subviews)
{
if (view.tag == [sender tag])
{
[self.webView bringSubviewToFront:view];
}
}
}
这是响应我输入地址的文本字段的代码。
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSString *text = [textField.text lowercaseString];
if (![text hasPrefix:@"http://"] && ![text hasPrefix:@"https://"])
{
text = [NSString stringWithFormat:@"http://%@", text];
}
self.title = text;
url = [NSURL URLWithString:text];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowedInMemoryOnly timeoutInterval:10.];
[self.webView loadRequest:request];
}
最佳答案
您不应将其他 Web View 添加为您的 Web View 的 subview 。这是一个不正确的设计。实际上,发生的情况是您在主 Web View 上调用 loadRequest:
,但将其 subview 之一置于前面,这会隐藏主 Web View 的内容。
根据您想要提供的体验,您有多种选择。
- 您可以处理 WebView (类似于您想要在此处执行的操作)。但 这些 WebView 应该位于层次结构中的同一级别,并且 仅应根据需要将它们带到前面。你的 View Controller 然后将成为多个 webview 的代表,并且必须 为他们所有人服务。这就是 Safari 管理其 View 的方式。
- 您可以创建一个页面 View Controller ,并为每个选项卡提供不同的 View Controller 。这将使其更易于管理,因为每个 View Controller 仅服务于一个选项卡。它还允许您从左或右滑动以快速切换选项卡。
关于ios - UIWebview 的 subview 没有响应加载请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579193/