【问题标题】:Drag and drop prevent multiple item to move at the same time拖放防止多个项目同时移动
【发布时间】:2014-12-16 18:38:00
【问题描述】:

在 UIScrollview 中,我有多个继承自 UIView 且可拖动的自定义子视图。除了我能够同时拖动两个或多个子视图之外,一切都很好。手势识别器附加到我的自定义子视图并在此类中实现。 有什么办法可以防止这种行为吗?

编辑:我已经尝试添加委托

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return false
}

但它不起作用,因为所有子视图都处理自己的手势识别器。

【问题讨论】:

    标签: ios swift drag-and-drop uigesturerecognizer uipangesturerecognizer


    【解决方案1】:

    GestureRecognizerDelegate 协议具有指定多个手势识别器是否可以同时动作的功能。我不知道这是否适用于您的情况,但值得一试:

    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return false
    }
    

    【讨论】:

    • 我试过了,但是由于手势委托和代码在子视图中,我似乎不起作用。
    【解决方案2】:

    我知道这是一个老问题,但我遇到了同样的问题,我希望同时只有一个项目可以拖动。您可以遍历所有可拖动的子视图并更新它们的属性,如下所示。

               subiew.isExclusiveTouch = true
        subview.isMultipleTouchEnabled = false
    
    

    现在只能同时拖动一个子视图。

    【讨论】:

    • 这个问题有 7 年历史了。它很可能不再需要答案,并且使用的版本发生了变化。
    • @Gugu72 我今天遇到了这个问题。我尝试寻找答案,但在任何地方都找不到。因此,当我找到答案时,我将其发布给可能正在寻找它的人。版本可能会改变,但逻辑不会。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多