我是IOS初学者,尝试为UIButton启用辅助功能。出于遗留目的,我们仍在使用Objective-C编写IOS应用程序。我的按钮代码如下:

-(UIButton*) initializeDoneButton {
    UIButton *doneButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 10)];
    [doneButton setTitle:@"Done" forState:UIControlStateNormal];
    [doneButton addTarget:self action:@selector(finishTheProcess:)
        forControlEvents:UIControlEventTouchUpInside];
    [doneButton setIsAccessibilityElement:YES];
    [doneButton setAccessibilityLabel:@"Done Button"];
    [doneButton setAccessibilityHint:@"Tap button to complete the process"];
    return doneButton;
}

我的回调函数
- (void) finishTheProcess:(UIButton *)sender {
    // Code here to finish the process.
}

我看到语音提示仅敲击一次,而不是双击。理想情况下,第一次轻拍应在画外音时宣布标签“完成”的标题。第二次点击应执行动作回调函数。这有可能吗?

我已经阅读了Apple关于辅助功能的教程,但是无法弄清楚如何为UIButton启用辅助功能。

更新

这是针对我的姓名提交的错误报告
Actual Result : Voice Over announces only tap instead of double tap for “Done”.

Expected Result : Voice Over should announce as double tap.

最佳答案

tl; dr-修改accessibilityHint以说“双击”

iOS上的辅助功能元素具有许多可以宣布的Voice Over特性。首先要了解可访问性焦点的功能。为了区分打算在屏幕上点击按钮的用户与想要了解更多有关该元素的用户,Apple实施了可访问性焦点,基本上就像将鼠标悬停在浏览器上的网页元素上以获取更多信息。当用户在辅助功能元素上单击一次或在元素之间向左/向右滑动时,将激活此焦点。

一旦点击了可访问性元素,Voice Over就会宣布有助于用户理解可访问性焦点元素的信息。这些公告可以通过可访问性功能进行自定义,并按以下顺序进行说明。

  • 可访问性标签-可访问性元素的描述符
    doneButton.accessibilityLabel = "Done";
  • 可访问性特质-几个常用的特征之一(例如按钮,标题)
    doneButton.accessibilityTraits = UIAccessibilityTraitButton;

  • *对于UIButton类的对象,此特征将默认为UIAccessibilityTraitButton
  • 可访问性提示-解释了可访问性元素的功能
    doneButton.accessibilityHint = "Double tap the button to complete the process.";

  • *一旦宣布了UIAccessibilityTrait,许多可访问性用户将知道双击以按下按钮

    可以设置其他可访问性特征,但这是最常用的特征,将涵盖您所需的大多数功能。您的代码实际上实际上接近于可操作。您真正需要做的就是修改accessibilityHint以说出您想要Voice Over宣布的内容。

    07-24 09:24