在画外音中注册 UIGestureRecognizer 操作

tri*_*le7 5 uigesturerecognizer ios swift

我有一个标准UIViewController并注册了一个UISwipeGestureRecognizer,在我的viewDidLoad覆盖中将视图委托给它。

手势注册并正确调用适当的动作,但是当画外音打开时不会发生这种情况。

UIGestureRecognizer仅适用于iOS版中的标准用法?有没有办法让声音注册这些手势,无论是双击、滑动、捏合/缩放等

tri*_*le7 7

弄清楚这是如何工作的,我认为值得分享这个:

在查看 UIView 类以及 UIAccessibilityTraits 之后,所有 UIView 及其子类都有一个使用各种 UIAccessibilityTraits 的位掩码,可用于: - 指定 UIView 或任何采用 UIAccessibility 协议的类的标准行为。- 允许各种配置,例如刷新速度、启用滑块类型行为等。

这是所有可用特征的链接:https : //developer.apple.com/reference/uikit/uiaccessibility/accessibility_traits

对于我的具体情况,我使用了 UIAccessibilityTraitAllowsDirectInteraction 和 UIAccessibilityTraitUpdatesFrequently。然后所有 UIGestureRecognizers 都被正确注册,无论是滑动、点击、捏合等。

它们需要被指定为位掩码,因此如果您需要一个元素具有这些属性,请输入:

myView.UIAccessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction | UIAccessibilityTraitUpdatesFrequently

编译,运行应用程序,我得到了告诉我它是什么的视图,并且正确地滑动寄存器而没有出现问题时你听到的“砰”的声音。

希望这可以帮助那些也想知道如何让它工作的人,但是这也可能与自定义视图略有冲突,具体取决于您希望有视力或有视力障碍的用户如何体验 UI。然而,我发现这种方式比创建一整套 UIElements 更优雅,因为交互方法保持不变,并且不需要编写代码来提示或解释要做什么。