gpt4 book ai didi

swift - 使用 UIPanrecognizer 的自定义 View 无意中锁定了 UITableViewController

转载 作者:行者123 更新时间:2023-11-30 13:34:55 24 4
gpt4 key购买 nike

我想将自定义 View (从 nib 创建)放入 UITableViewCell 中。这可以正常工作,除非自定义 View 声明它自己的单点触摸UIPanrecognizer。在这些情况下,我的自定义 View 响应平移事件,但这几乎禁用了在 TableView 内滚动单元格的能力。我尝试向单元格和自定义 View 注册 UIPanRecognizer,但自 IOS 9 以来似乎不再允许这种能力(似乎这也不是 Apple 希望处理触摸事件的方式,我在某处读到触摸事件应该只需由一个 View 处理)

我也未能找到一种以编程方式滚动表格 View 的方法,这看起来也有点hacky。

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

我的用例如下:我想重用我为应用程序的另一部分创建的可以横向滚动的自定义 View 。我的表格 View 设置为仅对向下平移使用react。因此,两个平移操作不会相互干扰。

我目前解决此问题的两种方法如下:横向滚动会对两指平移使用react。这是非常尴尬和不直观的。

自定义 View 上的所有手势(点击除外)都会发送到其 super View 。点击自定义 View 会禁用重新路由,这会锁定 TableView 并通过让自定义 View 对横向平移使用react来启用横向滚动。再次点击可恢复初始行为。这很尴尬,因为它要求用户执行三个单独的操作,而实际上应该只有一个操作。

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

有人知道解决这个困境的方法吗?

最佳答案

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

我关注了this tutorial创建了一个自定义的 SidewaysPanGestureRecognizer,注册它并通过实现负责决定 View 是否存在的 UIGestureRecognizerDelegate 方法将除 SidewaysPanGestureRecognizer 之外的所有手势传递给 super View 应该处理手势:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, 
shouldReceiveTouch touch: UITouch) -> Bool {
return gestureRecognizer is SidewaysPanGestureRecognizer
}

关于swift - 使用 UIPanrecognizer 的自定义 View 无意中锁定了 UITableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com