iOS 辅助功能 -- 轻弹一下?

iOS Accessibility -- doing something on flick?

是否可以捕获辅助功能 VoiceOver 单指轻弹?我只想在用户看到特定元素后更新我的 accessibilityElements 数组。

背景:

我手动将我的 accessibilityElements 数组设置为我的集合视图中的 visibleCells(),然后是我视图的 done 按钮。但是,一旦用户到达 done 按钮,我希望用户有机会继续滚动(就像普通用户一样),但我不知道如何,在用户有到达 done 可访问性元素,将新的 visible cells 推入 accessibilityElements 数组。

代码: 只是为了提供更多背景信息,这就是我正在做的事情:

    var accessibilityElements : [UIView] = myCollectionView.visibleCells()
    accessibilityElements.append(doneButton)
    view.accessibilityElements = accessibilityElements

这一切都发生在我的 viewDidAppear 方法中。在将可访问性滑动到 doneButton?

之后,有没有办法在某个地方做同样的事情

尝试的方法:

我试图使用 UIAccessibilityFocus 协议,但我试图检查焦点的视图是 UIButton,我不想将 UIButton 子类化为实现此方法只是为了可访问性。还有别的办法吗?

解决方案是使用 accessibilityScroll 方法,并在其中更改 viewaccessibilityElements 数组。

来自文档:

Scrolls screen content in an application-specific way and returns the success or failure of the action.
    func accessibilityScroll(_ direction: UIAccessibilityScrollDirection) -> Bool
Parameters
    direction   
         A constant that specifies the direction of the scrolling action. See UIAccessibilityScrollDirection for descriptions of valid constants.

Link to docs

所以我基本上为我的集合视图覆盖了这个方法,并建议我的用户 "three finger swipe" 获得这个行为,这就是导致 accessibilityScroll 被调用的原因。我总是 return 正确,并在应该发生的单元格上滑动适当的动画。

PS。 .Next.Previous direction 值对我来说从来没有发生过,我只有 .Right.Left