一千萬個為什麽

搜索

在iOS中,如何禁用工具欄中的手勢識別?

我的視圖有一個工具欄,其中包含兩個類型為 UIBarButtonItem 的按鈕。我正在嘗試實現一個手勢識別器,這樣當我在視圖中的任何地方點擊時,除了在工具欄中,我都會調用一個選擇器。點擊工具欄中的欄按鈕項應該調用該按鈕的操作方法。該視圖符合 UIGestureRecognizerDelegate 協議,並實現 shouldReceiveTouch 方法,如下所示:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
                                                shouldReceiveTouch:(UITouch *) touch {
 //Disallow recognition of tap gestures in the toolbar
  if ((touch.view == self.sideOneBarButton.customView) &&
      (gestureRecognizer == self.tapRecognizer)) {
    return NO;
  }
  return YES;
}

問題是,當我點擊工具欄按鈕時, touch.view 的類型為 UTToolbarTextButton * ,這是一個未記錄的類,所以我的if語句失敗並且 shouldReceiveTouch 總是返回YES,我的按鈕事件永遠不會被調用。

理想情況下,我想說:如果觸摸位於工具欄中的任何位置,則返回no。最好的方法是什麽?

最佳答案

關於委托功能,這對我有好處。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view.superview isKindOfClass:[UIToolbar class]]) {
        return NO;
    }
    return YES;
}

轉載註明原文: 在iOS中,如何禁用工具欄中的手勢識別?