我正在使用平移手势识别器,我需要检测初始触摸点才能采取行动。我使用以下代码;
@IBAction func panDetected(sender: UIPanGestureRecognizer) {
let touchPoint = sender.locationOfTouch(0, inView: nil)
println(touchPoint.x)
}
当我移动手指时,这些功能会打印触摸点。然而,一旦我从屏幕上抬起手指,它就会崩溃。这是崩溃消息;
Terminating app due to uncaught exception 'NSRangeException', reason: '-[UIPanGestureRecognizer locationOfTouch:inView:]: index (0) beyond bounds (0).'
我已经尝试过设置最小和最大触摸限制,正如这篇文章所暗示的那样; PAN Gesture is crashing while taking the location of touch in view in iOS
可能是什么问题?
答案 0 :(得分:7)
您遇到的问题是,一旦手势结束,它就不再有任何触摸,因此不再需要在索引0处进行检索。您可能只想使用locationInView
方法:
let touchPoint = sender.locationInView(sender.view)
(这对于视图使用sender.view
而不是nil
,因为在手势识别器添加到的视图的坐标空间中获取触摸位置通常比在坐标空间中更有用窗口)