UIWebview的子视图没有响应加载请求

时间:2013-12-14 02:57:44

标签: ios iphone objective-c uiwebview

我正在构建一个Web浏览器,当我添加另一个标签时会创建一个新的UIWebview。每个新视图在创建时都会给出一个标记,允许我调用特定的视图。当我将子视图调到前面时,它不会响应加载请求。这就是我将子视图带到前面的方式

-(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];

}

1 个答案:

答案 0 :(得分:1)

您不应该将其他网络视图添加为您的网页视图的子视图。这是一个不正确的设计。实际上,您在主Webview上调用loadRequest:会发生什么,但会将其中一个子视图放在前面,这会隐藏主要webview的内容。

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

  1. 你可以兼顾webviews(类似于你想在这里做的)。但 这些webview应该在层次结构中的同一级别上,并且 他们只应该根据需要被带到前面。你的视图控制器 然后将成为多个webview的代表,并且必须 为他们服务。这就是Safari管理其观点的方式。
  2. 您可以创建一个页面视图控制器,并为每个选项卡提供不同的视图控制器。这将使管理更加容易,因为每个视图控制器只能为一个选项卡提供服务。它还允许您从左或右滑动以快速切换标签。