是否可以捕捉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
方法,并在其中更改view
的accessibilityElements
数组。
来自文档:
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.
链接到文档
因此,我基本上为我的集合视图覆盖了这个方法,并建议我的用户"三指滑动"以获得这种行为,这就是调用accessibilityScroll
的原因。我总是返回true,并为在我的细胞上滑动做适当的动画。
PS。.Next
和.Previous
的direction
值对我来说从未发生过,我只得到了.Right
和.Left
。