8

有没有办法让 iOS 播放出现UIActionSheet时播放的音调?这是一声突然的哔哔声,后面跟着“警报”这个词。

我已经搜索了文档,但找不到任何看起来合适的东西。

4

3 回答 3

2

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

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

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

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

于 2014-02-06T20:05:05.160 回答
0

在 System Sound Services、AVAudioPlayer、Audio Queue Services 和 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:

于 2014-02-11T09:28:45.407 回答
0

我相当确定您所听到的声音来自“屏幕更改”通知。这是一个可访问性通知(来自文档)

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

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

要为您自己的视图执行此操作,您将执行以下操作:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
                                yourNewViewThatShouldGetFocus);
于 2014-02-11T09:37:32.783 回答