我希望在点击按钮时,可以让我的iPhone震动两次(就像收到短信的震动提醒一样)
使用AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
只能得到一个普通的震动,但我想要两个短震:/。
我希望在点击按钮时,可以让我的iPhone震动两次(就像收到短信的震动提醒一样)
使用AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
只能得到一个普通的震动,但我想要两个短震:/。
iOS 10更新
iOS 10提供了几种新的方法来实现这个功能,而且代码很短。
方法1 - UIImpactFeedbackGenerator:
let feedbackGenerator = UIImpactFeedbackGenerator(style: .heavy)
feedbackGenerator.impactOccurred()
方法2 - UINotificationFeedbackGenerator:
let feedbackGenerator = UINotificationFeedbackGenerator()
feedbackGenerator.notificationOccurred(.error)
方法三 - UISelectionFeedbackGenerator:
let feedbackGenerator = UISelectionFeedbackGenerator()
feedbackGenerator.selectionChanged()
#import <AudioToolbox/AudioServices.h>
AudioServicesPlayAlertSound(UInt32(kSystemSoundID_Vibrate))
这是Swift函数...请参阅此文章获取详细描述。
import UIKit
import AudioToolbox
class ViewController: UIViewController {
var counter = 0
var timer : NSTimer?
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func vibratePhone() {
counter++
switch counter {
case 1, 2:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
default:
timer?.invalidate()
}
}
@IBAction func vibrate(sender: UIButton) {
counter = 0
timer = NSTimer.scheduledTimerWithTimeInterval(0.6, target: self, selector: "vibratePhone", userInfo: nil, repeats: true)
}
}
```最初的回答```
func vibrate() {
AudioServicesPlaySystemSoundWithCompletion(kSystemSoundID_Vibrate) {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
}
}
通过使用递归和 AudioServicesPlaySystemSoundWithCompletion
,可以实现多次振动。
您可以向振动函数传递一个计数器,如 vibrate(count: 10)
。然后它会振动10次。
原始回答:最初的回答
func vibrate(count: Int) {
if count == 0 {
return
}
AudioServicesPlaySystemSoundWithCompletion(kSystemSoundID_Vibrate) { [weak self] in
self?.vibrate(count: count - 1)
}
}
如果使用UIFeedbackGenerator
,有一个很好的库Haptica
希望这有所帮助。