[英]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.