10

我有一个按钮,如果点击按钮以外的任何东西,我想让它消失。所以我为删除按钮设置了目标:动作:

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

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

[self.superview addGestureRecognizer:self.tapOutsideDelete];

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

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

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

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

4

1 回答 1

14

是的,轻按手势首先会在轻按时出现。您需要实现该gestureRecognizer:shouldReceiveTouch:方法:

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

    if (touch.view == self.deleteButton) {
        return NO;
    }
    return YES;
}
于 2012-06-22T22:35:11.473 回答