拖放功能防止多个项目同时移动

3
我在一个UIScrollview中有多个自定义子视图,这些子视图继承自UIView,可以拖动。除此之外一切正常,但问题是我能够同时拖动两个或更多的子视图。手势识别器附加在我的自定义子视图上,并在该类中实现。有没有办法防止这种行为发生?
编辑:我已经尝试在委托中添加了一些内容。
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return false
}

但是由于所有子视图都处理自己的手势识别器,所以它无法工作。

2个回答

0

我知道这是一个老问题,但我遇到了同样的问题,我只想同时拖动一个项目。您可以循环遍历所有可拖动的子视图,并按照以下方式更新它们的属性。

           subiew.isExclusiveTouch = true
    subview.isMultipleTouchEnabled = false

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


1
这个问题已经有7年的历史了。很可能不再需要回答,而且使用的版本也已经发生了变化。 - Gugu72
1
@Gugu72,今天我遇到了这个问题。我尝试搜索答案,但无论如何都找不到。所以,当我找到答案时,我发布了它,为那些可能正在寻找答案的人提供帮助。版本可能会改变,但逻辑不会改变。 - irfan akram

0

GestureRecognizerDelegate 协议有一个函数可以指定多个手势识别器是否可以同时起作用。我不知道这在你的情况下是否有效,但值得一试:

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

我已经尝试过了,但由于手势委托和代码位于子视图中,似乎不起作用。 - Loadex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接