表点击和 didselect 方法冲突

Posted

技术标签:

【中文标题】表点击和 didselect 方法冲突【英文标题】:Table tap and didselect method ***ing 【发布时间】:2014-03-04 14:15:46 【问题描述】:

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

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

谁能帮我解决这个问题?我只想一键执行此操作。 这是屏幕截图:

【问题讨论】:

【参考方案1】:

我不太确定我理解您为什么要这样做,但是:

您可以在首次触发手势识别器后将其移除 或者,您不能使用自己的手势识别器,而只是在第一次调用 didSelectRow... 时执行您想做的任何事情(通过设置标志或检查其他状态来决定是否执行这个一次性的东西与否)。

【讨论】:

【参考方案2】:

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

mRecognizer.cancelsTouchesInView = NO;

【讨论】:

【参考方案3】:

您可以使用手势识别器委托方法来检查触摸点是否在 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

【讨论】:

这里的containerView是什么? @vivek containerView 是包含您的 tableView 的视图 @vivek 你希望 tableViewCell 被选中,同时你想显示后退按钮都是通过用户单击实现的,对吧?

以上是关于表点击和 didselect 方法冲突的主要内容,如果未能解决你的问题,请参考以下文章

反应引导表按钮与行点击冲突

Android点击事件和滑动冲突解决

解决hash冲突的方法

iOS解决单击手势和UITableView的点击事件冲突

哈希表原理及如何避免键值冲突法?

字典与哈希表(HashMap)