在某些情况下,不会调用UIGestureRecognizerState.Ended

时间:2015-10-10 16:36:06

标签: ios swift uigesturerecognizer uipangesturerecognizer

当我拖动视图并让它进入一个新位置时。每次调用都会调用。

当我拖动视图一段时间并让它进入它开始的相同位置时,没有任何东西被调用,我希望.Ended或默认被调用但是没有发生。

为什么会这样?当用户一致地放开视图时,我该如何学习?

var gestureRecognizer = UIPanGestureRecognizer(target: self, action: Selector("dragged:"))
gestureRecognizer.delegate = self
view.addGestureRecognizer(gestureRecognizer)

func dragged(gesture: UIPanGestureRecognizer) {
    switch gesture.state {
    case UIGestureRecognizerState.Began:
        print("calls this everytime touch began")
    case UIGestureRecognizerState.Ended:
        print("doesn't call this everytime")
    default: 
        print("never calls this")
    }
}

2 个答案:

答案 0 :(得分:0)

您几乎应该总是使用UIGestureRecognizerState.Ended || UIGestureRecognizerState.Cancelled作为两个中的一个肯定会在手势结束时调用。这样,您还可以处理用户拖过屏幕的情况。

答案 1 :(得分:0)

在我的情况下,仅当我在模拟器中使用两指捏或旋转手势并使用键盘上的 option 键时,这种情况才会发生。

通常,手势结束后(不移动鼠标)再按一次 option 键似乎可以解决问题,并且达到.ended状态。

我没有在实际设备上遇到此问题。