表点击和 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 方法冲突的主要内容,如果未能解决你的问题,请参考以下文章