7

我想知道是否有办法在 SwiftUI 中处理 Apple Pencil 事件?例如,如果您喜欢处理直接触摸,而 Apple Pencil 则不同,请说直接触摸滚动,但使用 Apple Pencil 画线。

有类似这样的问题。

如何使用 SwiftUI 处理屏幕触摸事件?

但是DragGesture,例如,似乎没有访问器可以访问喜欢UITouch.TouchType的属性来区分direct或。indirectpencil

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

谢谢,

4

4 回答 4

1

我认为最好的方法是创建一个自定义UIGestureRecognizer. 通过这种方式,您可以覆盖touchesBegantouchesMoved等等并访问UITouch将包含的对象UITouch.TouchType

在此处查看 Apple 的示例代码,特别是StrokeGestureRecognizer类。

于 2020-05-26T12:02:52.317 回答
0
extension MTKView{
    public override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        print(touches.first?.type.rawValue)
    }
}
于 2020-08-06T09:21:02.153 回答
0

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

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

于 2020-10-13T03:50:23.850 回答
0

如果您需要使用 SwiftUI 访问 UIKit 手势。该线程可以帮助您入门:

将 UIView 包裹在 SwiftUI 周围,触摸和绘制的坐标现在没有对齐?

你将使用UIViewControllerRepresentable

于 2021-10-16T13:09:08.433 回答