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

时间:2012-06-22 22:30:18

标签: cocoa-touch events uigesturerecognizer

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

[self.deleteButton addTarget:self action:@selector(deleteButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

稍后将添加手势识别器添加到包含视图:

[self.superview addGestureRecognizer:self.tapOutsideDelete];

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

如果我删除了手势识别器,则deleteButton可以正常工作。

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

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

1 个答案:

答案 0 :(得分:13)

是的,点击手势会在点击时首先出现问题。您需要实现gestureRecognizer:shouldReceiveTouch:方法:

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

    if (touch.view == self.deleteButton) {
        return NO;
    }
    return YES;
}