2013-12-16 34 views
1

我想要連接到webview的UISwipeGestureRecognizer。這有效,但我也需要能夠上下滾動網頁視圖。WebView和UISwipeGestureRecognizer

這裏是我的代碼:

UISwipeGestureRecognizer *upSwipeGesture = [[UISwipeGestureRecognizer alloc] 
initWithTarget:self action:@selector(tapAction)]; 
upSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp; 
upSwipeGesture.cancelsTouchesInView = NO; 
[self.view addGestureRecognizer:upSwipeGesture]; 

[webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:upSwipeGesture]; 

如果我註釋掉最後一行,則web視圖滾動,但姿勢不被認可。如果我不註釋掉最後一行,那麼手勢將被識別,但webview不會滾動。

我希望能夠滾動並識別手勢。有任何想法嗎?謝謝!

+1

的可能的複製[上一個UIWebView不UIGestureRecognizer工作?](http://stackoverflow.com/questions/2909807 /不-uigesturerecognizer工作-ON-A-的UIWebView) –

回答

2

UIWebView具有自己的私人視圖,該視圖還附帶了手勢識別器。因此,優先規則會使添加到UIWebView的任何手勢識別器無法正常工作。

一種選擇是實現UIGestureRecognizerDelegate協議並實現方法gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer。對於其他輕擊手勢,從此方法返回YES。

這樣你就可以調用你的tap處理程序,並且web view仍然會被調用。

試試這個,

UISwipeGestureRecognizer *upSwipeGesture = [[UISwipeGestureRecognizer alloc] 
initWithTarget:self action:@selector(tapAction)]; 
upSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp; 
upSwipeGesture.cancelsTouchesInView = NO; 
upSwipeGesture.delegate=self; 
[self.view addGestureRecognizer:upSwipeGesture]; 

IND實現這個委託方法,

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
    return YES; 
} 
相關問題