拖放防止多个项目同时移动
Posted
技术标签:
【中文标题】拖放防止多个项目同时移动【英文标题】: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
但它不起作用,因为所有子视图都处理自己的手势识别器。
【问题讨论】:
【参考方案1】:GestureRecognizerDelegate
协议具有指定多个手势识别器是否可以同时动作的功能。我不知道这是否适用于您的情况,但值得一试:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
return false
【讨论】:
我试过了,但是由于手势委托和代码在子视图中,我似乎不起作用。【参考方案2】:我知道这是一个老问题,但我遇到了同样的问题,我希望同时只有一个项目可以拖动。您可以遍历所有可拖动的子视图并更新它们的属性,如下所示。
subiew.isExclusiveTouch = true
subview.isMultipleTouchEnabled = false
现在只能同时拖动一个子视图。
【讨论】:
这个问题有 7 年历史了。它很可能不再需要答案,并且使用的版本发生了变化。 @Gugu72 我今天遇到了这个问题。我尝试寻找答案,但在任何地方都找不到。因此,当我找到答案时,我将其发布给可能正在寻找它的人。版本可能会改变,但逻辑不会。以上是关于拖放防止多个项目同时移动的主要内容,如果未能解决你的问题,请参考以下文章
QTreeView - 如何判断拖放事件是重新排序还是父母之间的移动?