为钢琴风格 UI 元素添加辅助功能

Adding Accessibility to piano style UI element

我正在尝试使音乐键盘 UI 元素易于访问。就像 GarageBand 的做法一样。换句话说,首先触摸用户被 VoiceOver 告知他们正在触摸音乐键盘,从那时起,音乐键盘视图上的每次点击都会播放音符,并且在用户触摸音乐键盘框架之外之前不会有进一步的 VoiceOver 中断。

我有一个 UICollectionView,其中每个单元格代表一个音乐键,当用户点击它时,音符会按预期播放。但是,我很难让它像 GB 那样工作。对于 UICollectionView 对象,我设置了 accessibilityLabel 并将 accessibilityTraits 设置为 UIAccessibilityTraitAllowsDirectInteraction。但这似乎不起作用。当 VoiceOver 打开时,它不会播放任何音符。第一次点击时,VoiceOver 会报出 accessibilityLabel 设置的内容,然后每次点击都会发出哔哔声。

我有自定义 UIGestureRecogniser 子类,用于集合视图单元格点击检测。在这种情况下我需要做一些特别的事情吗?

有什么想法吗?我还需要做其他事情吗?

想通了。但是不确定原因是什么。

将音乐键盘 UICollectionView 嵌入到另一个视图中,并使该视图可通过 UIAccessibilityTraitAllowsDirectInteraction 特性访问。现在它按预期工作了。