【发布时间】:2017-02-10 15:16:48
【问题描述】:
标题有它... iOS 10 上有一个新的声音,UIPickerView 会在每次更改所选项目时播放。有没有办法播放那个声音?如果有系统声音,则最好使用AudioServicesPlaySystemSound(_),如果没有,则以任何其他方式使用。
【问题讨论】:
标签: ios audio uipickerview ios10 system-sounds
标题有它... iOS 10 上有一个新的声音,UIPickerView 会在每次更改所选项目时播放。有没有办法播放那个声音?如果有系统声音,则最好使用AudioServicesPlaySystemSound(_),如果没有,则以任何其他方式使用。
【问题讨论】:
标签: ios audio uipickerview ios10 system-sounds
我也遇到了同样的问题,终于找到解决办法了
AudioServicesPlaySystemSoundWithCompletion(1157, nil);
AudioServicesPlaySystemSound 将在未来的版本中被弃用。请改用AudioServicesPlaySystemSoundWithCompletion。
如果要模拟 UIPickerView 的声音和振动,还应添加以下代码。
if (@available(iOS 10.0, *)) {
UIImpactFeedbackGenerator *impactFeedBack = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleLight];
[impactFeedBack prepare];
[impactFeedBack impactOccurred];
}
【讨论】:
您可以使用系统点击声音或保存它们并从本地资源中使用
// NSURL *fileURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds/wheels_of_time.caf"]; // Too loud
// NSURL *fileURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds/nano/TimerWheelHoursDetent_Haptic.caf"]; // Hours tick
SystemSoundID soundID;
NSURL *fileURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds/nano/TimerWheelMinutesDetent_Haptic.caf"]; // Minutes tick
AudioServicesCreateSystemSoundID((__bridge_retained CFURLRef)fileURL, &soundID);
AudioServicesPlaySystemSound(soundID);
AudioServicesDisposeSystemSoundID(soundID);
【讨论】: