UIView關聯多個Gesture

如果一個UIView關聯多個UIGestureRecognizer, 會發生一個奇怪的問題,如下面代碼

  1.     UIPanGestureRecognizer *pang = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panned:)];  
  2.     [self.view addGestureRecognizer:pang];  
  3.       
  4.     UISwipeGestureRecognizer *swip = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swip:)];  
  5.     [self.view addGestureRecognizer:swip];  
  6. - (void)swip:(UISwipeGestureRecognizer *)gesture {  
  7.     NSLog(@"swip");  
  8. }  
  9.   
  10. - (void)panned:(UIPanGestureRecognizer *)gesture {  
  11.     NSLog(@"pan");  
  12. }  

結果是看不到swip的手勢觸發。


原因是系統event傳遞是,當有一個相響了,event就不會傳遞下去了。

要想兩個gesturerecognizer都起作用,只需要加幾行代碼就可以了

  1. swip.delegate = self;  

然後實現,返回YES,表示還要響應otherGestureRecognizer.

  1. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {  
  2.     return YES;  
  3. }  

這下就可以看到swip在consol中打印出來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章