[英]iOS - ignoring a tap gesture
我在自定義表格單元格中有一個UITapGestureRecognizer,它打算什么也不做(刪除點按單元格以選擇它的能力)。 這很好用,但是單元格中有一些按鈕(子視圖)無法點擊,因為輕擊手勢可以處理整個單元格區域。
因此,就像檢測觸摸手勢何時位於這些按鈕之一上並返回false以取消該特定手勢一樣簡單,對吧? 好吧,不適合我...
我已經刪除了邏輯,只是在手勢識別器中返回了NO,但是我仍然無法點擊按鈕。
- (BOOL)ignoreTap:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch
{
return NO;
}
這里有什么我想念的嗎?
解決方案更簡單:您不應該使用手勢識別器來執行此操作。 如果您不希望選擇單元格,則可以做兩件事:
-tableView:willSelectRowAtIndexPath:
返回nil
-tableView:willSelectRowAtIndexPath:
不可選擇 selectionStyle
設置為UITableViewCellSelectionStyleNone
以刪除突出顯示效果 以這種方式進行操作應保留您的按鈕功能。
編輯:如果您不想這樣做,那么您可以做您最初嘗試的操作-除非我認為您的方法名稱錯誤,應該是這樣:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
為此,我做了一個自定義按鈕,如下所示:
- (void)awakeFromNib
{
[super awakeFromNib];
[self addTarget:self action:@selector(touchDown) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(touchUpInside) forControlEvents:UIControlEventTouchUpInside];
[self addTarget:self action:@selector(touchUpOutside) forControlEvents:UIControlEventTouchUpOutside];
}
- (void)touchDown
{
self.imageView.image = [UIImage imageNamed:@"ButtonPressed.png"];
}
- (void)touchUpInside
{
self.imageView.image = [UIImage imageNamed:@"Button.png"];
}
- (void)touchUpOutside
{
self.imageView.image = [UIImage imageNamed:@"Button.png"];
}
- (void)setHighlighted:(BOOL)highlighted
{
return;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.