将 UIGestureRecognizer 事件传递给子 TableViewCells

Posted

技术标签:

【中文标题】将 UIGestureRecognizer 事件传递给子 TableViewCells【英文标题】:Passing UIGestureRecognizer events to child TableViewCells 【发布时间】:2013-07-11 18:28:27 【问题描述】:

我目前有以下设置:

一个 RootVC,在 self.view 上有一个 UIPanGestureRecognizer。然后 RootVC 有一个子 UITableViewController,因此 UITableViewController.view 是 self.view 的子视图。

UITableViewController 上的单元格也有手势识别器,可以让它们横向滑动。当 UITableViewController 本身是根视图控制器时,这非常有效。

我的问题是我试图将特定手势从 self.view 手势识别器传递到表格单元格。我已经尝试过代表:

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

-(BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer

我可以正确识别我想在下面发送的手势并在该实例中返回 NO 但这似乎取消了手势而不是将其传递给子视图。

我知道我可以打电话

[self.view.subviews[0] gestureShouldBegin:gestureRecognizer];

但是因为它是表格视图单元格,我无法确定手势也应该发送到哪个单元格。

我一直在想类似的事情

[[self.childViewControllers[0] cellForRowAtIndexPath:indexPath] gestureShouldBegin:gestureRecognizer];

可以,但我不知道如何确定正确的 indexPath..

有什么想法吗?

【问题讨论】:

【参考方案1】:

查看 (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point

您需要先将手势点转换为 tableView 的坐标。

【讨论】:

以上是关于将 UIGestureRecognizer 事件传递给子 TableViewCells的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIGestureRecognizer 传递奇怪的 ios 触摸事件

UIAlertView 弹出窗口之间的 UIGestureRecognizer 事件

与 UIGestureRecognizer 一起监听 UITouch 事件

带有 UIGestureRecognizer 的 UITouch 事件

如何用 UIGestureRecognizer 替换 TouchesBegan

从 UITouch 对象调用 UIGestureRecognizer