2015-06-02 56 views
1

我加UILongPressGestureRecognizerUIWebViewUILongPressGestureRecognizer通倒是一個UIWebView

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longTouch:)]; 
longPress.delegate = self; 
longPress.minimumPressDuration = 0.5; 
longPress.cancelsTouchesInView = YES; 

[_webView addGestureRecognizer:longPress]; 

cancelsTouchesInView設置爲YES,但長按超級鏈接後觸摸傳給UIWebViewUIWebView點擊此超級鏈接和加載其他頁面。

長按後如何禁用觸摸到UIWebView

回答

0

您可以在下面的代碼中使用,以防止內部的WebView內容觸動鏈接 -

@property (assign, nonatomic) BOOL allowLoad; 

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 
    return allowLoad; 
} 

- (void)webViewDidFinishLoad:(UIWebView*)webView { 
    allowLoad = NO; 
} 

不要忘了設置代理[self.webView setDelegate:self];

希望這會幫助你

+0

此代碼禁止在所有的超鏈接點擊。但我不需要禁止他們。我只需要長時間按下即可禁用通過UIWebView傳遞。 –

0

實現以下手勢代表方法防止長時間按網頁查看觸摸:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isDescendantOfView:self.webView]) 
    { 
     //Ignore gesture when it's web view 
     return NO; 
    } 

    return YES; 
} 

更新

請下面的代碼嘗試 -

-(void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"]; 
} 
+1

此代碼無法使用。長按之後仍然點擊UIWebView中的超鏈接。 –

+0

請檢查以上更新代碼 –

+1

此JavaScript代碼我已經出現在我的項目中,但它不能解決我所描述的問題。 –