确定是否在webView上点击了一个链接 - iPhone

时间:2010-03-14 20:49:36

标签: iphone objective-c uiwebview webview

我正在使用自定义网页视图在用户触摸网页视图时显示标签栏。但是当我点击webview中的链接时,tabbar会显示一段时间然后页面加载。我正在使用此自定义网络视图来检测触摸:http://github.com/psychs/iphone-samples/blob/b772b963f2acf18d478b41b44555992fcd8d4f31/WebViewTappingHack/Classes/PSWebView.m

我可以检测链接是否被点击了吗?由于链接位于webview上,webview会检测到触摸并加载页面...我想阻止它。

提前致谢。

3 个答案:

答案 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);

希望这有助于某人...