更喜欢 UITableView 的重新排序控制手势而不是自定义平移手势

Posted

技术标签:

【中文标题】更喜欢 UITableView 的重新排序控制手势而不是自定义平移手势【英文标题】:Preferring UITableView's reorder control gesture over custom pan gesture 【发布时间】:2019-10-20 09:17:37 【问题描述】:

我有一个UITableView 附加了一个自定义UIPanGestureRecognizer,通过使用shouldRecognizeSimultaneouslyWith,我在我的自定义手势和表格视图上的正常滚动手势之间获得了预期的行为:

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool 
        return otherGestureRecognizer == scrollView?.panGestureRecognizer
    

问题是我破坏了表格的重新排序控件:

重新排序手势成功启动,但随后我的自定义平移手势启动并中断它。

我可以通过在识别我的自定义手势之前要求其他手势失败来解决此问题:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
             shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool 
    return true  // I need to be more specific in here

但这太宽泛了,当我把它留在这里时,其他事情就会中断。我需要一种方法来仅针对重新排序控件的手势,但我找不到任何方法来检查它。

有谁知道如何获取对重新排序控件手势的引用?或者任何人都可以提出不同的方法来解决这个冲突吗?任何帮助将不胜感激!

【问题讨论】:

您找到解决方案了吗?我正在努力实现同样的目标。 您找到解决方案了吗?我正在努力实现同样的目标。 【参考方案1】:

尝试将此添加到您的UIPanGestureRecognizer

panGestureRecognizer.cancelsTouchesInView = false

【讨论】:

以上是关于更喜欢 UITableView 的重新排序控制手势而不是自定义平移手势的主要内容,如果未能解决你的问题,请参考以下文章

更喜欢滑动删除而不是竞争的滑动手势

更改 UITableView 中重新排序图标的颜色

无法在弹出控制器中显示的 UITableView 上显示重新排序控件

响应 UITableView 等手势的 UIStackView

处理 UITableView 单元格上的平移手势

如何在 ios 7 上更改重新排序控制图像