1

我设计了一个 UITableView 的自定义子类。在使用它的某个时候,我需要添加一个 UIView 作为 UITableView 的直接子视图,用我的手指将它拖到表格视图中,然后从表格视图中删除它。我使用 UILongPressGestureRecognizer 以与 iOS 日历应用程序非常相似的方式创建视图,通过重置其框架将其拖到 tableview 周围,然后通过将其添加到单元格中将其从 table view 中删除。

这有效,但有一个警告。当我的手指移动得太快时,我会“失去对 UIView 的控制”,除非我将手指移回视图框架内以再次“拾起”它,否则它不会追上我的手指。

由于 UITableView 是 UIScrollView 的子类,我尝试将 table view 的 delaysContentTouchs 和 canCancelContentTouches 属性设置为 NO,同时将被拖动的 UIView 的 ExclusiveTouch 属性设置为 YES。没有任何效果。

最终,我希望能够以与内置 iOS 日历应用程序一样多的响应能力在表格视图中拖动我的 UIView。有什么想法吗?

PS我对iOS开发比较陌生,所以如果这里有一些重大疏忽,请原谅。

4

1 回答 1

1

问题解决了!事实证明,设置本身没有任何问题(将子视图添加到 UITableView 并拖动)。

经过大量挖掘,我发现每次将视图拖动到新坐标时,我都在执行一次 hitTest。人们可以看到每秒执行如此密集的操作如何会减慢设备上的处理速度,从而导致这种奇怪的行为。当我改变它时,一切都很完美。

最终,要吸取的教训是我的视图控制器子类太复杂,因此不易阅读。发现这个问题需要进行太多的挖掘。从那以后,我煞费苦心地简化我的代码——这让我受益匪浅。

于 2013-02-20T20:08:27.087 回答