我想在UITableViewCell
s中放置自定义视图(从nib创建)。这没有问题,除非自定义视图声明它自己的单触UIPanrecognizer
。在这些情况下,我的自定义视图会响应pan事件,但这几乎会禁用滚动表视图中的单元格的功能。我尝试使用单元格和自定义视图注册UIPanRecognizer,但是自IOS 9以来似乎不再允许这种能力(似乎这也不是Apple想要触摸事件的处理方式,我在某处读到触摸事件应该只是由一个视图处理)
我也没能找到一种以编程方式滚动表格视图的方法,这看起来有点像hacky。
当我想要保留UITableView的平移行为同时仍然能够响应自定义视图中的平移事件时,我有哪些选择?
我的用例如下:我想重用一个自定义视图,它可以横向滚动我为我的应用程序的另一部分创建的。我的表视图设置为仅对向下平移做出反应。因此,两个泛动作不会干扰。
我目前解决的两种方法如下: 横向滚动会对双指平移做出反应。这是非常尴尬和不直观的。
自定义视图上的所有手势(水龙头除外)都会被发送到其超级视图。点击自定义视图会禁用重新路由,这会锁定表格视图,并通过让自定义视图对侧向平移做出反应来启用侧向滚动。另一个点击恢复初始行为。这很尴尬,因为它要求用户执行三个单独的操作,而这应该只是一个。
我知道我可以为表格视图启用横向平移,但这并不能解决我想在单元格内重用自定义视图的问题。
有没有人知道这种困境的解决方案?
答案 0 :(得分:0)
解决方案是创建自定义UIGestureRecognizer
。
我关注this tutorial,创建了一个自定义SidewaysPanGestureRecognizer
,通过实施负责决定是否为SidewaysPanGestureRecognizer
方法的UIGestureRecognizerDelegate
方法,将所有手势通过func gestureRecognizer(gestureRecognizer: UIGestureRecognizer,
shouldReceiveTouch touch: UITouch) -> Bool {
return gestureRecognizer is SidewaysPanGestureRecognizer
}
注册到超级视图视图应该处理手势:
```{r, echo=TRUE}
f1$fpevals
```