0

我想在UITableViewCells 中放置自定义视图(从 nib 创建)。除非自定义视图声明它是自己的 single touch ,否则这没有问题UIPanrecognizer。在这些情况下,我的自定义视图会响应平移事件,但这几乎禁用了在表格视图中滚动单元格的能力。我尝试使用单元格和自定义视图注册 UIPanRecognizer,但自 IOS 9 以来似乎不再允许该功能(似乎这也不是 Apple 希望处理触摸事件的方式,我在某处读到触摸事件应该只由一个视图处理)

我也没有找到一种以编程方式滚动表格视图的方法,这看起来也有点笨拙。

当想要保留 UITableView 的平移行为同时仍然能够响应我的自定义视图中的平移事件时,我有哪些选择?

我的用例如下:我想重用我为应用程序的另一部分创建的可以横向滚动的自定义视图。我的表格视图设置为仅对向下平移作出反应。因此,这两个平移动作没有干扰。

我目前解决此问题的两种方法如下:侧向滚动对两个手指平底锅作出反应。这是超级尴尬和不直观的。

自定义视图上的所有手势(点击除外)都会发送到其超级视图。点击自定义视图会禁用重新路由,这会锁定表格视图并通过让自定义视图对横向平移做出反应来启用横向滚动。再次轻按会恢复初始行为。这很尴尬,因为它要求用户执行三个单独的操作,而应该只是一个。

我知道我可以为表格视图启用横向平移,但这并不能解决我想要在单元格内重用自定义视图的问题。

有谁知道这个困境的解决方案?

4

1 回答 1

0

解决方案是创建一个自定义UIGestureRecognizer.

我按照本教程,创建了一个自定义,注册了它,并通过实现负责决定视图是否应该处理手势的方法SidewaysPanGestureRecognizer将所有手势传递给超级视图:SidewaysPanGestureRecognizerUIGestureRecognizerDelegate

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, 
     shouldReceiveTouch touch: UITouch) -> Bool {
    return gestureRecognizer is SidewaysPanGestureRecognizer
}
于 2016-03-24T05:55:15.117 回答