我想在我的 iPhone 应用程序中使用捏合手势实现缩放。问题是,在识别手势时调用的方法中,我无法访问触摸事件本身(所以我无法真正获取它们的
locationInView:
),并且我想获取它以便居中我的放大正确。
在
UIPinchGestureRecognizer
类定义中定义了 UITouch *_touches[2];
,但我无法从类外部访问它。我可以做些什么来获取这些数据吗?
我没有找到更简单的方法:
您可以创建自定义 UIPinchGestureRecognizer 并为 UITouches 提供两个属性。在touchesBegun 和touchesMoved 上分配它们的值。然后只需访问这些属性即可找到触摸的位置
这就是我所做的,效果很好。希望有帮助。
是的,你可以
请参阅 UIGestureRecognizer 上的文档 https://developer.apple.com/documentation/uikit/uigesturerecognizer
手势识别器的客户端还可以通过调用location(in:)或location(ofTouch:in:)来询问手势的位置。
@objc func scale(gestureRecognizer: UIPinchGestureRecognizer) {
guard let view = gestureRecognizer.view else {
print("View is gone?")
return
}
guard gestureRecognizer.state == .began || gestureRecognizer.state == .changed else {
return
}
print("location: \(gestureRecognizer.location(in: view)) scale: \(gestureRecognizer.scale)")
// OR print("location: \(gestureRecognizer.location(in: self)) scale: \(gestureRecognizer.scale)")
}