表格点击和didselect方法冲突

时间:2014-03-04 14:15:46

标签: ios iphone uitableview uiview uigesturerecognizer

我有一个viewcontroller,我在其中全屏添加了tableview,我在tableview上也有一个后退按钮。现在当视图在2秒后出现时,我正在减少按钮的alpha值,当用户触摸屏幕的任何地方时,我再次显示alpha 1。

为了在具有tableview的视图中实现这一点,我已经将tap手势添加到tableview,并且点击我将后退按钮alpha设置为1.但是当我将此方法添加到tableview时,问题就出现了我无法访问tableview didselectrow:metod。

任何人都可以帮我这个吗?我想只用一个水龙头做这个。 这是截图: enter image description here

3 个答案:

答案 0 :(得分:3)

我不太清楚我明白你为什么要这样做,但是:

  • 您可以在第一次触发后删除手势识别器
  • 或者,您无法使用自己的手势识别器,只需在第一次调用didSelectRow ...时执行任何操作(通过设置标志或检查其他状态,以决定是否执行)这一次性的事情与否。)

答案 1 :(得分:0)

UIGestureRecognizer属性cancelsTouchesInView设置为NO,以便将触摸传递给视图。

mRecognizer.cancelsTouchesInView = NO;

答案 2 :(得分:0)

你可以使用Gesture识别器委托方法来检查触摸点是否在tableView中,如下所示

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{

    CGPoint point=[gestureRecognizer locationInView:containerView];
    CGRect AreaNotinterested=///calculate the area you want recognizer to skip
    if (CGRectContainsPoint(AreaNotinterested, point)) {
        return NO;
    }
    else
        return YES;
}

使用此方法告知代理是否启动或停止UIGestureRecognizer