iOS 无限深度嵌套的 TableView/UIGestureRecognizer 视图树和 iPAD 需要 2 根手指在 tableview 上滚动
Posted
技术标签:
【中文标题】iOS 无限深度嵌套的 TableView/UIGestureRecognizer 视图树和 iPAD 需要 2 根手指在 tableview 上滚动【英文标题】:iOS infinitely deeply nested TableView/UIGestureRecognizer view tree AND iPAD requires 2 finger scrolling on a tableview 【发布时间】:2015-06-05 08:56:38 【问题描述】:我这几天一直在尝试解决这个问题,但 google/SO 并没有帮助我。
从 iPAD 中查看 tableview 时,需要 2 指平移手势来滚动 tableview(仅当启用单元格的用户交互时)
我的一个朋友建议我可能有 2 个嵌套的手势识别器,这可能会导致这种行为。但是,这种行为在 iPhone 上不存在。
我的应用程序上有 2 个不同的 tableview,只有一个启用了用户交互的行为是这样的。我开始调试,发现了一些有趣的东西。
这是不需要 2 根手指平移的 tableview 的视图树的屏幕截图。 “损坏的”tableview 具有类似的视图树。这棵树似乎是无限的,我想知道为什么这不会导致崩溃。有人可以确认,这是预期的行为吗?
有没有人偶然发现在 iPAD 上的 tableviews 上强制使用 2 指平移手势。这似乎不是 ios 本机应用程序的默认行为。
非常感谢您的所有回答!
编辑 1:
- 2 指平移仅在动态原型单元格上强制执行,而不在具有静态单元格的 tableView 中强制执行。我一直在检查我的 tableViews 和单元格“构造函数”,但我没有做任何与手势相关的操作。
-self.tableView.panGestureRecognizer.minimumNumberOfTouches == 1
【问题讨论】:
至于那个截图 - 它不是视图树,它是变量/引用树。似乎是无限的,因为有引用循环UIScrollView <-> UIPanGestureRecognizer
。 (但不是保留周期,所以没问题)
【参考方案1】:
检查您的 scrollView 的 panGestureRecognizer.minimumNumberOfTouches
是否以某种方式设置为 2,如果有,请检查是谁做的。
【讨论】:
感谢您的快速响应。 self.tableView.panGestureRecognizer.minimumNumberOfTouches == 1.【参考方案2】:我找到了答案。
我在:didHighlightRowAtIndexPath 上显示了一个 alertView。
将其更改为:didSelectRowAtIndexPath 解决了问题,让我现在可以用一根手指滚动。
【讨论】:
以上是关于iOS 无限深度嵌套的 TableView/UIGestureRecognizer 视图树和 iPAD 需要 2 根手指在 tableview 上滚动的主要内容,如果未能解决你的问题,请参考以下文章
在两个嵌套子类中调用 super.viewDidLoad() 时,我遇到了 Swift 的无限循环