我有一个问题,VoiceOver在键盘焦点时宣布我的自定义UITextInput:当通过向左/向右滑动将辅助功能焦点移动到UITextInput视图时,VoiceOver正确地宣布了UITextInput,我是听到类似Text field, is editing, <content of text input>, character mode, insertion point at end
的内容。
但是,如果我通过点击它来将辅助功能焦点移到UITextInput上,VoiceOver会说empty line
,这是不正确的。
无论UITextInput如何获得辅助功能焦点,我都希望VoiceOver能够做出完全相同的声明。
任何想法可能是造成这种奇怪行为的原因吗?
答案 0 :(得分:0)
要标记文本字段,您需要利用一些不同的属性。首先,只有让自定义控件扩展UITextFIeld类才能获得“文本字段”部分。这是你在一开始就可以获得公告而不影响其他事情的唯一方法。您可以将其附加到标签上。以下是我为您的自定义文本编辑器推荐的属性。
ClassType:UITextField的子类(可能是最重要的部分)
AccessibilityLabel:输入文本代表的内容(例如:密码,用户名等)。
AccessibilityValue:输入的文字。
AccessibilityHint:“一些非关键信息,它们分享了有关输入信息的用途的详细信息。”
AccessibilityTraits :(不是静态文本特征)
请注意,提示不是至关重要的信息。提示经常被忽略,只包含有用的澄清信息。
ClassType:????
的子类AccessibilityLabel:文本字段,$ EditingState,$ EnteredText,$ InsertionPoint
AccessibilityValue:nil
AccessibilityHint:nil
AccessibilityTraits:StaticText(很奇怪,但是如果你自己包含角色信息,我们希望在可编辑的文本字段上使用静态文本的特性,以避免VoiceOver变得聪明,包括它,并在公告中复制角色信息。这开始感觉像是一个黑客吗?)
这是一个可怕的想法,你真的应该让你的TextField从系统UITextField继承并免费获得所有这些东西,但是如果你必须这样,这就是你如何实现...类似的行为而不这样做。我说类似,因为有些东西你不能在自定义控件中复制。