按键点击事件是否被Tap手势识别器覆盖?

Jim*_*Jim 10 events cocoa-touch uigesturerecognizer

我有一个按钮,如果有任何东西被按下按钮,我想要消失.所以我设置了目标:action:对于删除按钮:

[self.deleteButton addTarget:self action:@selector(deleteButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

随后将点击手势识别器添加到包含视图:

[self.superview addGestureRecognizer:self.tapOutsideDelete];
Run Code Online (Sandbox Code Playgroud)

当我这样做时,不执行deleteButton的操作,就像无法识别按钮点击一样.在这种情况下,手势识别器确实有效.但是当我点击deleteButton时它也有效,这让我认为点击手势识别器优先于按钮点击.

如果我删除手势识别器,deleteButton正常工作.

我显然不明白如何一起处理这两个事件.我需要做什么?

(deleteButton正在模仿表格视图单元格的删除按钮,但在这种情况下我将它放在标题视图中.我希望调用一种方法,当我点击表格中除按钮本身之外的任何地方时,删除按钮消失,它在单元格中的工作方式相同.)

Mus*_*sis 13

是的,水龙头手势在水龙头处首先出现裂缝.您需要实现该gestureRecognizer:shouldReceiveTouch:方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
            shouldReceiveTouch:(UITouch *)touch {

    if (touch.view == self.deleteButton) {
        return NO;
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这非常有效.我们花了一点时间才发现这是UIGestureRecognizerDelegate协议的委托方法,因此也必须设置委托指针. (2认同)