Ios 基于确切的URL隐藏按钮
仅当某个URL显示在Ios 基于确切的URL隐藏按钮,ios,objective-c,webview,uibutton,hidden,Ios,Objective C,Webview,Uibutton,Hidden,仅当某个URL显示在UIWebView中时,我才试图隐藏按钮。这是我用来执行此操作的代码: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request { NSString *host = [request.URL host]; if ([host isEqualToString:@"http://example.com/cheese"]) { _b
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?)
不管怎样,我都不知道要改变什么或增加什么才能让它工作。非常感谢您的帮助
Update:我在
if
语句之前添加了一个NSLog,它甚至没有启动。我还将代码更改为下面的答案(再次感谢rmaddy)。我不知道为什么这个方法没有启动。URL的主机部分就是主机。如果URL为:
然后,主机
就是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"]) {
}
如果只想比较主机,请执行以下操作:
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
非常出色,这对我的其他方法有很大帮助!非常感谢。但是,我改变了我的第一个方法,即隐藏按钮的方法,以查找完整的URL,当加载example.com/cheese时,它仍然不会隐藏按钮。我仔细检查了一下,确保它的插座是连接好的。我还将其更改为返回YES
在if
中输入code>,并且返回NO代码>在else中,它似乎仍然不起作用。为什么不看看实际的URL,看看它是什么。它可能不是你想象的那样。添加NSLog语句或使用调试器查看if
语句前面的值。我在if
语句前面添加了NSLog,它甚至不会触发。很奇怪。不过我确实确保了URL是完全正确的。