0

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

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

我尝试覆盖touchesBegan函数并过滤UITouchinSet以忽略带有 type的函数pencil,但这似乎没有任何作用......

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

4

2 回答 2

0

简单的检查方法是 UITouch 对象将具有来自手写笔(例如 Apple Pencil)的附加信息。检查对象上是否存在此信息,以及 UITouch 对象是否来自触控笔。

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

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

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

于 2019-04-16T17:25:07.807 回答
0

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

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

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

手势识别器通过在跟踪 Apple Pencil 触摸时将 allowedTouchTypes 属性设置为 UITouch.TouchType.pencil 以及在跟踪手指触摸时将其设置为 UITouch.TouchType.direct 来区分触摸类型。

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

于 2019-11-13T06:42:28.780 回答