2014-10-09 80 views
1

我创建了一个视图,通过长按“激活”编辑模式后,其子视图可以通过拖放进行重新排列。开始拖放后长按

我用于那两个姿态重建器a UILongPressGestureRecognizerUIPanGestureRecognizer

一切都很好,但我想要开始拖动我的子视图,而不必再次点击我的视图(例如,当您在跳板上重新排列图标时)。

有没有办法做这样的事情?

编辑:

我已经试过:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    var res = false 

    if ((gestureRecognizer == longTapGesture && otherGestureRecognizer == panGesture) || (gestureRecognizer == panGesture && otherGestureRecognizer == panGesture)) { 
     res = true 
     println("") 
    } 
    return true 
} 

没有成功。

回答

1

首先,这两个手势识别器应该很好地结合在一起。通常他们中的一个会取消另一个。为了防止您可以使用UIGestureRecognizerDelegate方法gestureRecognizer: shouldRecognizeSimultaneouslyWithGestureRecognizer:并为两个识别器返回YES。

之后,您需要有一个布尔属性来锁定您的平移效果,在长按发生之前。如果此属性设置为YES,则UILongPressGestureRecognizer目标方法应该只执行一些操作。请记住在平移手势完成/重置时将此属性设置为NO。

+0

这就是我的想法,但它不工作我正在编辑我的帖子,把一个代码示例。 – Loadex 2014-10-09 13:40:33

+0

此外,我在检测到长按事件时将该平移手势添加到视图中,如果这件事 – Loadex 2014-10-09 13:41:56

+0

重要。出现视图时添加平移手势。它应该始终启用,并且您决定根据您的布尔属性为视图设置动画效果。 – dadalar 2014-10-09 13:45:14