iOS - 忽略点按手势

时间:2011-08-24 08:20:25

标签: ios uigesturerecognizer

我在自定义表格单元格中有一个UITapGestureRecognizer,它不打算执行任何操作(删除点击单元格以选择它的功能)。这很好用,但是单元格中有一些按钮(子视图)无法点击,因为点击手势会处理整个单元格区域。

所以它就像检测触摸手势何时超过其中一个按钮并返回false以取消该特定手势一样简单,对吧?好吧不适合我...

我删除了逻辑,只是在手势识别器中返回NO,但我仍然无法点击按钮。

- (BOOL)ignoreTap:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch
{
    return NO;
}

我在这里缺少什么?

2 个答案:

答案 0 :(得分:3)

解决方案更简单:您不应该使用手势识别器来执行此操作。如果您不想选择单元格,可以做两件事:

这样做可以保留按钮功能。


编辑:如果您不想这样做,那么您可以执行您最初尝试的操作 - 除非我认为您的方法名称错误,应该是这样:

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

答案 1 :(得分:0)

要做到这一点,我做了一个这样的自定义按钮:

- (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;
}