簡體   English   中英

TapGestureRecognizer不會忽略對UIBarButtonItem的點擊

[英]Tap on UIBarButtonItem is not ignored by TapGestureRecognizer

我有一個帶有UIToolbar的視圖,其中包含一些UIBarButtonItems和一個包含一些UITextField的UITableView。

我想在任何地方輕按以關閉文本字段的鍵盤。 因此,我在視圖中添加了TapGestureRecognizer。 為了避免TapgestureRecognizer處理UIBarButtonItems上的輕擊,我添加了以下方法(設置了委托)。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    UIView *view = touch.view;
    while (view) {
         NSLog(@"Class of view: %@", NSStringFromClass([view class]));
         view = view.superview;
    }

    // Disallow recognition of tap gestures in the toolbar
    if ([touch.view isKindOfClass:[UIToolbar class]]) {
        return NO;
    }

    if ([touch.view.superview isMemberOfClass:[UIToolbar class]]) {
         return NO;
    }

    return YES;
}

UIBarButtonItem本身不是視圖,但是它具有UIToolbar作為其超級視圖。 當我使用上述方法時,isKindOfClass:[UIToolbar class]的檢查似乎不適用於工具欄上的所有輕按。 但是,使用isMemberOfClass:[UIToolbar class]檢查超級視圖是可行的。

我不明白 也許有人可以解釋這種行為?

您不應該依賴私有視圖類的視圖層次結構。 它可以隨時更改。

更好的方法是將手勢添加到表格視圖(或代表您感興趣的區域的其他適當視圖)中。 只需確保在適當的時間啟用和禁用手勢即可,以免阻止常規的表格操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM