ios - UIWebview 的 subview 没有响应加载请求

标签 ios iphone objective-c uiwebview

我正在构建一个 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 的内容。

根据您想要提供的体验,您有多种选择。

  1. 您可以处理 WebView (类似于您想要在此处执行的操作)。但 这些 WebView 应该位于层次结构中的同一级别,并且 仅应根据需要将它们带到前面。你的 View Controller 然后将成为多个 webview 的代表,并且必须 为他们所有人服务。这就是 Safari 管理其 View 的方式。
  2. 您可以创建一个页面 View Controller ,并为每个选项卡提供不同的 View Controller 。这将使其更易于管理,因为每个 View Controller 仅服务于一个选项卡。它还允许您从左或右滑动以快速切换选项卡。

关于ios - UIWebview 的 subview 没有响应加载请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579193/

相关文章:

ios - 如何在 iOS 中实现画笔描边

iphone - plist 是为我的 iOS 应用程序存储多个应用程序内首选项的最佳方式吗?

iphone - 检测 iPhone 相机方向

ios - 委托(delegate)方法在我的应用程序中工作,我如何使它在我的框架中工作?

ios - 在不同的 UIViewController 上管理多个 NSArrays?

iphone - 核心数据 : Setting Entity. 属性、类型问题

iphone - iOS - 使用 MKMapView 弹出和推送 View Controller 时意外崩溃

ios - Sqlite 行不删除

ios - swift 用新元素更新表格 View

iphone - 对于 "Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted."该怎么办