iOS中的可访问自定义键盘

时间:2013-05-23 14:59:54

标签: ios uitextfield accessibility voiceover uiaccessibility

我想让自定义键盘像iOS软件键盘一样执行可访问性。按下按钮会向UITextField添加一个字母时,VoiceOver应以“添加的字符音”说出该字母。当按钮按下删除UITextField中的字母时,VoiceOver应以“删除的字符音”说出该字母。

以下是我的尝试:

  1. 在故事板中的视图控制器中创建了一个UITextField。
  2. 在故事板中的视图控制器中创建了两个标记为“类型”和“退格”的UIButtons。
  3. 将两个UIButtons的辅助功能特征设置为键盘键。
  4. 将故事板UITextField连接到IBOutlet UITextField实例textField。
  5. 将故事板“输入”UIButton连接到IBAction,类型。
  6. 将故事板“Backspace”UIButton连接到IBAction,-backspace。
  7. 已实施-type为:[[self textField] insertText:@"a"];
  8. 已实施-backspace为:[[self textField] deleteBackward];
  9. 使textField成为第一响应者。
  10. 我也尝试了同样的事情,将按钮移动到设置为textField的inputView的UIView。

    可以在文本字段中正确添加和删除字符,但VoiceOver不会说出这些字符。我怎样才能做到这一点?

    修改
    硬件键盘说话正确。只有自定义软件键盘才能正常说话。

2 个答案:

答案 0 :(得分:0)

可能需要为整个设备启用Voice Over才能使其正常工作。您可以在辅助功能中更改此设置。如果已经在设备上启用了语音播放,我不知道该怎么办。

答案 1 :(得分:0)

我注意到,要获得“语音内容”»“语音屏幕”也要说出键盘按键,我必须将.keyboardKey添加到按钮accessibilityTraits上,例如在Swift中:

button.accessibilityTraits = [.keyboardKey]

或者在Objective-C中:

[button setAccessibilityTraits:UIAccessibilityTraitKeyboardKey];

而且,显然,如果您的按钮是图像,则也要为其添加显式accessibilityLabel