区分手指触摸和 Apple Pencil 触摸



我正在使用SceneKit在iPad Pro上渲染3D模型。我的要求是我想在使用Apple Pencil时执行不同的交互。

有没有办法区分手指触摸和Apple Pencil触摸?

我尝试覆盖 touchesBegan 函数并过滤Set中的UITouch以忽略类型 pencil 的函数,但这似乎没有任何作用......

编辑:我对处理这两种不同类型的触摸更感兴趣(即当有手指触摸事件时,我想做一些动作A。如果是铅笔,我想做动作B(。我甚至会覆盖哪些方法来实现这种隔离?

简单的检查方法是 UITouch 对象将具有来自手写笔(如 Apple Pencil(的其他信息。检查对象上是否存在此信息,如果存在,则 UITouch 对象来自触笔。

有关更深入的信息,我在下面链接了开发人员文档中的Apple Pencil输入指南。

但是,您能否提供代码,因为 UITouch 上的类型仍应正确报告?

https://developer.apple.com/documentation/uikit/pencil_interactions/handling_input_from_apple_pencil

关键是 UIGestureRecognizer 类。 "具体手势识别器的基类"苹果文档说

它具有一个名为 allowedTouchType 的属性,可用于区分不同类型的触摸。

此属性是一组触摸类型,用于识别触摸是直接的还是间接的。有关所有可能的触摸类型的列表,请参阅 UITouch.TouchType 枚举 UITouch。此属性的默认值包含所有触摸类型。

手势识别器通过在跟踪 Apple Pencil 触摸时将 allowedTouchType 属性设置为 UITouch.TouchType.pencil,在跟踪手指触摸时将 UITouch.TouchType.direct 设置为 UITouch.TouchType.direct,从而区分触摸类型。

另外,我在苹果文档中找到了这个。本教程提供了可帮助区分手指和 Apple 铅笔触摸的帮助程序方法。=>

苹果的文档说,"源自Apple Pencil的触摸对象包含其他信息,包括Apple Pencil的方位角和高度以及在其尖端记录的力的大小。 但是,检查(touch.altitudeAngle > 0)对我不起作用,因为某些手指触摸也有角度设置。我尝试了(touch.majorRadiusTolerance == 0),这似乎是可靠的。然后我意识到我们可以简单地检查(touch.type == .pencil).

相关内容

  • 没有找到相关文章

最新更新