带有延迟触摸功能的手势识别器会停止对touchesMoved的所有调用吗?

时间:2018-04-07 20:35:26

标签: ios uigesturerecognizer ios11 touchesmoved

下面的视图控制器代码演示了我的问题。它打印一些调试语句以响应触摸事件和捏合手势。

如果手势识别器被禁用,我在屏幕上拖动手指,一切都按预期工作:控制器获得touchesBegan,一堆touchesMoved和{{1} }。但是,如果我启用手势识别器并将其touchesEnded属性设置为delaysTouchesBegan,并拖动单个手指,则控制器仅会收到truetouchesBegan个来电 - 不{{1 }}。

touchesEnded的文档表明触摸事件会在手势识别器失败后堆积并传递。这是预期的行为 - 失去所有touchesMoved事件?

delaysTouchesBegan

1 个答案:

答案 0 :(得分:0)

每次手指之间的距离发生变化时,捏合手势识别器会报告更改。手指之间的距离报告为比例因子。因此,您需要查看比例因子,而不是touchesMoved。这有用吗?

@objc func pinched(_ gr: UIPinchGestureRecognizer) {

    if gr.state == .began  {
        print("began")
    }

    if gr.state == .changed {
        print("scale: \(gr.scale)")
    }

    if gr.state == .ended {
        print("ended")
    }
}

Handling Pinch Gestures

Handling Pinch Gestures ( Swift 4 - 2018 )