有没有办法让iOS播放出UIActionSheet
播放的音调?突然发出哔哔声,接着是“警报”一词。
我搜索了文档,但找不到合适的内容。
答案 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
延迟播放的秒数,相对于音频输出设备的当前时间。
答案 2 :(得分:0)
我相当确定你所采取的声音来自"屏幕更改"通知。这是一个可访问性通知(来自文档)
当出现包含屏幕主要部分的新视图时,由应用程序发布。
当您在应用程序中发布if时,您可以传递将要读取的字符串或焦点应移动到的元素。在警报视图的情况下,焦点移动到警报视图,因此我假设UIKit将警报视图作为第二个参数发布。
为了您自己的观点,您可以这样做:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
yourNewViewThatShouldGetFocus);