UIPinchGestureRecognizer 的触摸位置

问题描述 投票:0回答:3

我想在我的 iPhone 应用程序中使用捏合手势实现缩放。问题是,在识别手势时调用的方法中,我无法访问触摸事件本身(所以我无法真正获取它们的

locationInView:
),并且我想获取它以便居中我的放大正确。

UIPinchGestureRecognizer
类定义中定义了
UITouch          *_touches[2];
,但我无法从类外部访问它。我可以做些什么来获取这些数据吗?

iphone cocoa-touch uigesturerecognizer pinch
3个回答
4
投票

我没有找到更简单的方法:

您可以创建自定义 UIPinchGestureRecognizer 并为 UITouches 提供两个属性。在touchesBegun 和touchesMoved 上分配它们的值。然后只需访问这些属性即可找到触摸的位置

这就是我所做的,效果很好。希望有帮助。



0
投票

是的,你可以

请参阅 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)")
}
© www.soinside.com 2019 - 2024. All rights reserved.