我正在使用自定义网页视图在用户触摸网页视图时显示标签栏。但是当我点击webview中的链接时,tabbar会显示一段时间然后页面加载。我正在使用此自定义网络视图来检测触摸:http://github.com/psychs/iphone-samples/blob/b772b963f2acf18d478b41b44555992fcd8d4f31/WebViewTappingHack/Classes/PSWebView.m
我可以检测链接是否被点击了吗?由于链接位于webview上,webview会检测到触摸并加载页面...我想阻止它。
提前致谢。
答案 0 :(得分:3)
使用Javascript
我没有阻止加载页面,而是将Javascript注入到webview中,以便触摸链接不会做任何事情。
我不久前就answered提出了类似的问题。而不是禁用所有链接(如其他问题),只需查找您要禁用的特定链接,并删除其href
属性。
使用UIWebview代理
或者,如果您希望能够响应尝试单击链接的用户(可能为他们提供消息),您可以设置UIWebview的委托并实现webView:shouldStartLoadWithRequest:navigationType:
方法并返回{{1如果尝试加载的URL是您要阻止的URL。
顺便说一句,通常最佳做法是维护白名单而不是黑名单以进行此类排除。不要阻止您不希望的链接,阻止所有链接可能更好,除之外,您知道可以安全导航到这些链接。
答案 1 :(得分:3)
UIWebViewNavigationTypeLinkClicked =在点击链接时告诉您。 只检查你的电话
self.webView.delegate = self;
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:request.URL];
return NO;
}
return YES;
}
答案 2 :(得分:0)
好的,我做了一个解决方法并自己解决了......
我的链接位于顶部&页面的底部,所以我通过以下代码得到屏幕坐标,如果pos.y<一些价值和pos.y>一些值然后不显示菜单...
UITouch * touch = [touches anyObject];
CGPoint pos = [touch locationInView: [UIApplication sharedApplication].keyWindow];
NSLog(@"Position of touch: %.3f, %.3f", pos.x, pos.y);
希望这有助于某人...