隐藏基于精确URL的按钮

时间:2013-05-23 15:43:34

标签: ios objective-c webview uibutton hidden

我只是在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”,它都保持清晰。 (那个/奶酪部分也非常重要,也许它只是检查主机而不是完整的URL?)

无论哪种方式,我都不知道要改变什么或添加以使其工作。非常感谢任何帮助!

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

1 个答案:

答案 0 :(得分:1)

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

  

http://example.com/cheese

然后host只是example.com

如果您想比较完整的网址,请执行以下操作:

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

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

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

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

此外,在第一个代码块中,您最后会调用return 0。您应返回YESNO,因为返回类型为BOOL