我有一个带有自定义 UIView 的 iPad 应用程序(在 C# 中),它允许通过触摸和 Apple Pencil 手写笔触摸进行输入。我正在尝试集成对触控板/鼠标间接的支持(光标,或苹果称之为“指针”)。
我使用 HoverGestureRecognizer 进行悬停工作。我使用正常的触摸开始/移动/结束/取消事件进行右键单击和控制单击工作并检查 .type == .indirectPointer ,然后检查是否设置了 event.ModifierFlags 中的控制键修饰符,或者是否设置了 event.ButtonMask == 次要的。
我花了很多时间搜索 Apple Developer 网站上的文档,从这里开始并扩展:
当发生两指触控板滚动(或鼠标滚轮滚动)时,不知何故我无法在我的代码中找到系统调用的 API 。(在另一个是滚动视图的视图上,当我进行两指滚动时,我可以获得滚动视图的滚动事件,因为这是 iPadOS 13.4+ 内置的滚动视图,但我的自定义视图不是滚动视图,它里面只有一些可滚动的区域。)
我尝试过的事情:
- UISwipeGestureRecognizer。两指触控板滚动手势没有任何要求。
- UIPanGestureRecognizer。没有什么。
- 子类化 UIScrollView 并添加一个 UIScrollViewDelegate,只是为了看看它是否可以工作......什么都没有。
- 继承 GestureRecognizer 并添加它,然后覆盖 ShouldReceive(UIEvent evt) 但从未调用过。
iPadOS 13.4+ 将触控板两指滚动手势转换成什么?我可以把它当作某种事件吗?上面链接的文档非常令人失望,但它提到了 UIEvent.EventType.scroll 但没有提到系统将如何、何时或在何处使用该类型的事件调用我的任何方法。挺气人的。他们应该更清楚地说明这一点。
欢迎使用 Swift 或 C# 回答。