根本没有用于向 VoiceOver 提供自定义元素操作的 API。没有任何UIAccessibility*协议为此提供任何可能。我想如果您需要添加自定义操作并希望 Apple 将在未来的 iOS 版本中实现它(或者它会在一个月内出现在 iOS 7 中),我想您应该提交一个雷达。
更新:从 iOS 8 开始,您可以设置/实现该accessibilityCustomActions属性以返回对象数组UIAccessibilityCustomAction(请注意,除了您提供的内容之外,VoiceOver 仍会在其 UI 中添加“激活项目”默认操作。):
self.accessibilityCustomActions = [
UIAccessibilityCustomAction(name: NSLocalizedString("Close", comment: ""), target: self, selector: "didPressClose")
]
...
@objc
func didPressClose() -> Bool {
...
}
与 Swift 和选择器一样,@objc如果您没有子类NSObject化/该方法是私有的,请不要忘记将属性添加到 Swift 中自定义操作的目标方法,否则在尝试使用 VoiceOver 激活操作时,它不会做任何事情并播放“到达边界结束”的声音(至少在 iOS 8.2 和 8.3 上,我用做 subclass 的目标对象进行了测试NSObject)。
关于你的第二个问题 - 感觉就像一个错误,你可以再次提交雷达:-)