我想知道是否有办法在 SwiftUI 中处理 Apple Pencil 事件?例如,如果您喜欢处理直接触摸,而 Apple Pencil 则不同,请说直接触摸滚动,但使用 Apple Pencil 画线。
有类似这样的问题。
但是DragGesture
,例如,似乎没有访问器可以访问喜欢UITouch.TouchType
的属性来区分direct
或。indirect
pencil
如果没有办法,或者给我一些与UIView混合的技术,那好吧……
谢谢,
我想知道是否有办法在 SwiftUI 中处理 Apple Pencil 事件?例如,如果您喜欢处理直接触摸,而 Apple Pencil 则不同,请说直接触摸滚动,但使用 Apple Pencil 画线。
有类似这样的问题。
但是DragGesture
,例如,似乎没有访问器可以访问喜欢UITouch.TouchType
的属性来区分direct
或。indirect
pencil
如果没有办法,或者给我一些与UIView混合的技术,那好吧……
谢谢,
我认为最好的方法是创建一个自定义UIGestureRecognizer
. 通过这种方式,您可以覆盖touchesBegan
,touchesMoved
等等并访问UITouch
将包含的对象UITouch.TouchType
。
在此处查看 Apple 的示例代码,特别是StrokeGestureRecognizer
类。
extension MTKView{
public override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print(touches.first?.type.rawValue)
}
}
这是您提到的混合技术。它超级简单而且功能强大。您可以包装一个自定义 UIViewController 处理 touchEvents,并在 SwiftUI 中使用它。您需要做的就是创建一个符合UIViewControllerRepresentable
.
https://developer.apple.com/documentation/swiftui/uiviewcontrollerrepresentable
如果您需要使用 SwiftUI 访问 UIKit 手势。该线程可以帮助您入门:
将 UIView 包裹在 SwiftUI 周围,触摸和绘制的坐标现在没有对齐?
你将使用UIViewControllerRepresentable