2014-10-19 9 views
73

Ich muss das iPhone vibrieren lassen, aber ich weiß nicht, wie man das in Swift macht. Ich weiß, dass in Objective-C, Sie nur schreiben:Wie man iPhone mit Swift vibrieren lässt?

import AudioToolbox 
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 

Aber das funktioniert nicht für mich.

+1

Können Sie mehr zeigen von deinem Code? – WMios

+0

Swift hat die gleiche Funktion für Sie verfügbar: https://developer.apple.com/library/ios/documentation/AudioToolbox/Reference/SystemSoundServicesReference/index.html#//apple_ref/c/func/AudioServicesPlayAlertSound –

Antwort

151

kurzes Beispiel:

import UIKit 
import AudioToolbox 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))    
    } 
} 

Last auf das Telefon und es vibriert. Sie können es in eine Funktion oder IBAction einfügen, wie Sie möchten.

+0

gibt es einen Weg das Telefon so lange vibrieren lassen, bis eine Taste gedrückt wird? – Nicholas

+2

Was Nicholas gefragt hat, auch ich frage mich, ob es eine Möglichkeit gibt, es in einem speziellen Muster vibrieren zu lassen. –

+0

@Nicholas Sie könnten versuchen, Timer zu verwenden, um kSystemSoundID_Vibrate in Folge zu spielen, aber kontinuierliche Vibration scheint ein häufiger Grund für App-Store-Ablehnung zu sein: http://10base-t.com/unofficial-appstore-rejection-criteria/ – MathewS

14

Wir können dies tun, in Xcode7.1

import UIKit 
import AudioToolbox 


class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     AudioServicesPlayAlertSound(kSystemSoundID_Vibrate) 
    } 
} 
+1

Dies funktioniert immer noch in Swift 4, Xcode 9. – ken0nek

24

In iOS 10 auf iPhone 7 oder 7 Plus versuchen:

let generator = UIImpactFeedbackGenerator(style: .heavy) 
generator.impactOccurred() 
+4

Sie sollten hinzufügen, dass es iOS 10 Funktion ist ... –

+1

wir alle verwenden iOS 10, nicht wahr? es ist die neueste, die beste und kostenlose Version des Systems. Jeder sollte updaten, es gibt keine Kompromisse. –

+2

Sprich für dich selbst. Ich bin immer noch auf iOS 8.4. nicht bereit, meine Jailbreak Tweaks zu verlieren. –

0
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate)) 
+0

Sie sollten in Ihrer Antwort hervorheben, dass Sie ['AudioServicesPlaySystemSound'] verwenden (https://developer.apple.com/documentation/audiotoolbox/1405248) -audioservicesspacesound) anstelle der Top-Antwort ['AudioServicesPlayAlertSound'] (https://developer.apple.com/documentation/audiotooolbox/1405202-audoservicesplayalertound). –

3

Für iOS 10.0+ Sie UIFeedbackGenerator

Einfache Viewcontroller oben versuchen können, nur Ihre View-Controller in Ihrem Test "single view app" ersetzen

import UIKit 

class ViewController: UIViewController { 

    var i = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let btn = UIButton() 
     self.view.addSubview(btn) 
     btn.translatesAutoresizingMaskIntoConstraints = false 

     btn.widthAnchor.constraint(equalToConstant: 160).isActive = true 
     btn.heightAnchor.constraint(equalToConstant: 160).isActive = true 
     btn.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
     btn.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true 

     btn.setTitle("Tap me!", for: .normal) 
     btn.setTitleColor(UIColor.red, for: .normal) 
     btn.addTarget(self, action: #selector(tapped), for: .touchUpInside) 
    } 

    @objc func tapped() { 
     i += 1 
     print("Running \(i)") 

     switch i { 
     case 1: 
      let generator = UINotificationFeedbackGenerator() 
      generator.notificationOccurred(.error) 

     case 2: 
      let generator = UINotificationFeedbackGenerator() 
      generator.notificationOccurred(.success) 

     case 3: 
      let generator = UINotificationFeedbackGenerator() 
      generator.notificationOccurred(.warning) 

     case 4: 
      let generator = UIImpactFeedbackGenerator(style: .light) 
      generator.impactOccurred() 
     case 5: 
      let generator = UIImpactFeedbackGenerator(style: .medium) 
      generator.impactOccurred() 

     case 6: 
      let generator = UIImpactFeedbackGenerator(style: .heavy) 
      generator.impactOccurred() 

     default: 
      let generator = UISelectionFeedbackGenerator() 
      generator.selectionChanged() 
      i = 0 
     } 
    } 
} 
Verwandte Themen