如何让UIButton宣布双击语音?

时间:2016-10-08 07:45:19

标签: ios objective-c uibutton accessibility voiceover

我是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.

2 个答案:

答案 0 :(得分:2)

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

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

轻触辅助功能元素后,Voice Over会发布帮助用户了解辅助功能焦点元素的信息。这些公告可以通过辅助功能进行定制,并按以下顺序说明。

  1. 辅助功能标签 - 辅助功能元素的描述符

    doneButton.accessibilityLabel = "Done";

  2. 辅助功能特性 - 少数常用特征之一(例如按钮,标题)

    doneButton.accessibilityTraits = UIAccessibilityTraitButton;

  3. *对于UIButton类的对象,此特征将默认为UIAccessibilityTraitButton

    1. 辅助功能提示 - 解释辅助功能元素的功能

      doneButton.accessibilityHint = "Double tap the button to complete the process.";

    2. *许多可访问性用户知道在UIAccessibilityTrait宣布后双击按下按钮

      可以设置其他可访问性特征,但这些特性将涵盖您需要的大部分功能。您的代码实际上非常接近于运营。您真正需要做的就是修改accessibilityHint以说出您希望Voice Over宣布的内容。

答案 1 :(得分:1)

添加doneButton.accessibilityTraits = UIAccessibilityTraitButton;initializeDoneButton方法内。