是否有某种UIAccessibility Alert Tone?

时间:2014-02-03 21:56:30

标签: ios uikit accessibility uiactionsheet uiaccessibility

有没有办法让iOS播放出UIActionSheet播放的音调?突然发出哔哔声,接着是“警报”一词。

我搜索了文档,但找不到合适的内容。

3 个答案:

答案 0 :(得分:2)

并非所有系统控件的行为都可以使用UIAccessibility协议完全重新实现。没有公共API可以发出类似的辅助功能提示音。但是,您可以做的是以VoiceOver和其他辅助客户知道提醒用户的方式描述控制和转换。

根据应用的实施方式,您可能需要使用UIAccessibility通知UIAccessibilityPostNotification()屏幕内容已更改,UIAccessibility接受两个参数:通知类型和对象。对于屏幕更改通知,该对象表示应该获得焦点的下一个元素。 VoiceOver将处理此通知,发出提示音,并将光标移动到指定的元素。

一般来说,你不应该试图“让{{1}}”做任何事情。该协议允许您描述应用程序的内容和状态。每个辅助客户都可以根据需要将这些描述转换为替代界面。 VoiceOver不是唯一依赖UIAccessibility的辅助功能!如果您在应用程序中模仿其行为,则可能会混淆VoiceOver用户并疏远其他辅助功能(如Switch Control)的用户。

编辑:另一个答案建议您自己播放声音。再一次,我强烈建议不要为VoiceOver已经涵盖的场景引入自己的声音。系统声音图标不仅传达上下文。他们还向用户保证,特定控件是标准的,可预测的,实现所有预期行为。例如,您的自定义工作表是否支持双指擦洗手势(辅助功能转义)?系统表确实如此,如果他们听到表单声音,人们就会期待它。

答案 1 :(得分:0)

在System Sound Services,AVAudioPlayer,音频队列服务和OpenAL的帮助下,有很多方法可以播放音频。没有外部支持库,到目前为止最简单的两种方法是System Sound Services和AVAudioPlayer。

你什么时候可以玩点击按钮,延迟时间播放,持续时间播放等,这里是AVAudioPlayer的例子

   NSError *error;
   AVAudioPlayer *alertSound = [[AVAudioPlayer alloc]
        initWithContentsOfURL:musicURL error:&error];
    [alertSound prepareToPlay];
    [alertSound play];

编辑:

- (BOOL)playAtTime:(NSTimeInterval)time

延迟播放的秒数,相对于音频输出设备的当前时间。

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html#//apple_ref/occ/instm/AVAudioPlayer/playAtTime:

答案 2 :(得分:0)

我相当确定你所采取的声音来自"屏幕更改"通知。这是一个可访问性通知(来自文档)

  当出现包含屏幕主要部分的新视图时,由应用程序发布

当您在应用程序中发布if时,您可以传递将要读取的字符串或焦点应移动到的元素。在警报视图的情况下,焦点移动到警报视图,因此我假设UIKit将警报视图作为第二个参数发布。

为了您自己的观点,您可以这样做:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
                                yourNewViewThatShouldGetFocus);