0

只有当某个 URL 显示在UIWebView. 这是我用来这样做的代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request {
    NSString *host = [request.URL host];
    if ([host isEqualToString:@"http://example.com/cheese"]) {
        _backButton.hidden = YES;
    } else {
        _backButton.hidden = NO;
    }
    return 0;
}

当我测试它以查看后退按钮是否隐藏时,它永远不会。无论是否加载了“example.com/cheese”,它都清晰可见。(那个 /cheese 部分也很重要,也许它只是检查主机而不是完整的 URL?)

无论哪种方式,我都不知道要更改或添加什么才能使其正常工作。任何帮助是极大的赞赏!

更新:我在声明之前添加了一个 NSLog if,它甚至没有触发。我还将代码更改为下面的答案(再次感谢 rmaddy)。我不知道为什么这种方法没有触发。

4

1 回答 1

1

URL的host部分就是主机。如果网址是:

http://example.com/cheese

然后host就是example.com

如果要比较完整的 URL,请执行以下操作:

NSString *full = [request.URL absoluteString];
if ([full isEqualToString:@"http://example.com/cheese"]) {
}

如果您只想比较主机,请执行以下操作:

NSString *host = [request.URL host];
if ([host isEqualToString:@"example.com"]) {
}

奇怪的是,您在发布的第二段代码中它是正确的。您发布的第一段代码是错误的。

此外,在第一个代码块中,您return 0在最后调用。您应该返回或者返回,YES因为NO返回类型是BOOL.

于 2013-05-23T15:55:48.923 回答