ios - UIAccessibilityFocus 协议(protocol)不适用于 UITextField

标签 ios uitextfield accessibility voiceover

使用 UIAccessibilityFocus 协议(protocol),据推测,如果您重写 accessibilityElementDidBecomeFocused() 和 accessibilityElementDidLoseFocus(),您将能够在 Voiceover 运行时跟踪可访问元素何时获得或失去焦点。这似乎适用于所有字段类型 - UIButton、UILabel、UISwitch、UITextView 等 - 除了 UITextField。当 Voiceover 焦点在(或离开)一个 UITextField 上时,这些函数根本不会被调用。只是想知道这是错误还是其他原因。谢谢!

最佳答案

这是一个功能,让我解释一下。

如果没有打开 VoiceOver,iOS 中就没有焦点的概念。 UITextField 除外。无论是否打开 VoiceOver,UITextFields 都会“聚焦”(同样,在没有画外音的 iOS 中,焦点并不是真正的概念)。对于其他元素,情况并非如此。他们没有“gainFocus”等价物。获得焦点的 UIButton 仅从可访问性的角度来看才有意义。因此,他们为这些类添加了特殊的 accessibilityElementDidGainFocus 调用。它们被专门从 UITextFields 中删除,因为该调用在逻辑上等同于该类已经存在的调用,独立于 Accessibility API。

关于ios - UIAccessibilityFocus 协议(protocol)不适用于 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559236/

相关文章:

ios - 在 "fullscreen" View 中显示图像 - 当 ImageView 被点击时

ios - 作为用户类型,在 Swift 中使用 NSNumberFormatter 扩展格式化文本字段

html - 508/可访问性规则 (1) 链接必须有可识别的文本,(2) 空表格单元格(Axe 插件)

google-chrome - 访问键在 Chrome 中不起作用

ios - InputAccessoryView 不显示在 SubViewController 中

ios - 将闭包作为目标添加到 UIButton

javascript - 更改页面长度/滚动条时的 iOS 视觉闪光

ios - 将 UITextField 键盘置于最前面

iphone - 从 UITableviewCell 获取 View 对象

objective-c - 我想要为外国 OS X 应用程序窗口的移动设置动画