在SwiftUI中,是否有任何方法可以处理和/或区分Apple Pencil和直接触摸?

我想知道SwiftUI中是否可以处理Apple Pencil事件?例如,如果您想要处理直接触摸而与Apple Pencil的处理方式有所不同,则说直接触摸滚动,而使用Apple Pencil绘制线条。

有类似的问题。

How to Handle screen touch events with SwiftUI?

但是,例如,DragGesture似乎没有访问者可以像UITouch.TouchType这样的属性来区分directindirectpencil

如果没有办法,或者给我一些UIView的混合技术,那就好吧...

谢谢

zz19860418 回答:在SwiftUI中,是否有任何方法可以处理和/或区分Apple Pencil和直接触摸?

我认为做到这一点的最佳方法是创建自定义UIGestureRecognizer。这样,您可以覆盖touchesBegantouchesMoved等,然后访问将包含UITouch的{​​{1}}对象。

请参阅Apple的示例代码here,尤其是UITouch.TouchType类。

,
extension MTKView{
    public override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
        print(touches.first?.type.rawValue)
    }
}
,

这是您提到的混合技术。它超级简单而强大。您可以包装处理touchEvents的自定义UIViewController,并在SwiftUI中使用它。您需要做的就是创建一个符合UIViewControllerRepresentable的结构。

https://developer.apple.com/documentation/swiftui/uiviewcontrollerrepresentable

本文链接:https://www.f2er.com/3112296.html

大家都在问