3 回答
TA贡献1853条经验 获得超18个赞
从“ iPhone教程:检查iOS设备功能的更好方法 ”:
有两个看似相似的函数接受一个参数kSystemSoundID_Vibrate
:
1) AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);2) AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
这两个功能都会震动iPhone。但是,当您在不支持振动的设备上使用第一个功能时,它会发出哔声。另一方面,第二个功能在不支持的设备上不执行任何操作。因此,如果您要持续振动设备,作为警报,常识说,请使用功能2。
首先,AudioToolbox.framework
在Build Phases 中将AudioToolbox框架添加到目标。
然后,导入此头文件:
#import <AudioToolbox/AudioServices.h>
TA贡献1921条经验 获得超9个赞
Swift 2.0+
AudioToolbox现在将其显示kSystemSoundID_Vibrate
为SystemSoundID
类型,因此代码为:
import AudioToolbox.AudioServicesAudioServicesPlaySystemSound(kSystemSoundID_Vibrate)AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)
而不是必须通过额外的演员步骤
(@Dov的道具)
原始答案(Swift 1.x)
而且,这是你如何在Swift上做的(如果你遇到了和我一样的麻烦)
链接AudioToolbox.framework
(转到您的项目,选择目标,构建阶段,链接二进制文件库,在那里添加库)
完成后:
import AudioToolbox.AudioServices// Use either of theseAudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
俗气的是,这SystemSoundID
基本上是一个typealias
(花哨的快速typedef
)a UInt32
,而且kSystemSoundID_Vibrate
是一个常规的Int
。编译器给你一个错误,试图从中转换Int
为UInt32
,但错误读作“无法转换为SystemSoundID”,这是令人困惑的。为什么苹果不能让它成为Swift枚举超出我的范围。
@ aponomarenko's详细介绍,我的答案仅适用于那里的Swifters。
- 3 回答
- 0 关注
- 779 浏览
添加回答
举报