ios - UILongPressGestureRecognizer 不适用于 numberOfTapsRequired 和 minimumPressDuration 属性
问题描述
这是我的代码:
@IBAction func SOSLongPressed(_ sender: UILongPressGestureRecognizer) {
//sender.numberOfTapsRequired = 2
sender.minimumPressDuration = 3
if sender.state == .began {
print("long pressed")
}
}
问题:
“长按”在我的应用程序启动后第一次开始按下视图后大约 0.5 秒(而不是 3 秒)打印。换句话说,应用程序启动后,UILongPressGestureRecognizer 在第 2 次或第 3 次(以此类推)时正常工作,即 3 秒后打印“长按”。但不是第一次。
如果我取消注释该
sender.numberOfTapsRequired = 2
行,“长按”也会在 0.5 秒左右打印,即使只有 1 次点击并按住。之后,即使我双击并按住 3 秒钟,“长按”也不会再打印出来了。
不知道为什么会这样,希望有人可以帮助我。
提前致谢!
解决方案
只有在第一次被识别后,您才更新识别器的值。
您应该在创建识别器后立即设置这些属性的值。如果它是在 Interface Builder 中创建的,您应该也可以在那里设置值。
编辑以回答评论:
尝试将容差 ( allowableMovement
) 增加到 30 或 50。您的手指可能会在这 3 秒内移动到足以使识别器失败。
我无法评论该numberOfTaps
物业,因为我从未使用过它。
PS。您可以从 Interface Builder 或以编程方式修改所有这些设置,这不会产生影响。不同之处在于您在正确的时间设置属性,而不是在识别手势之后。