Как заставить iPhone вибрировать с помощью Swift?
мне нужно заставить iPhone вибрировать, но я не знаю, как это сделать в Swift. Я знаю, что в Objective-C, вы просто написать:
import AudioToolbox
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
но это не работает для меня.
7 ответов:
короткий пример:
import UIKit import AudioToolbox class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate)) } }
загрузить на свой телефон и он будет вибрировать. Вы можете поместить его в функцию или IBAction, как вы хотите.
в iOS 10 на iPhone 7 или 7 Plus, попробуйте:
let generator = UIImpactFeedbackGenerator(style: .heavy) generator.impactOccurred()
другие вибрации типа:
import AudioToolbox AudioServicesPlaySystemSound(1519) // Actuate "Peek" feedback (weak boom) AudioServicesPlaySystemSound(1520) // Actuate "Pop" feedback (strong boom) AudioServicesPlaySystemSound(1521) // Actuate "Nope" feedback (series of three weak booms)
Подробнее О Вибрацииhttp://www.mikitamanko.com/blog/2017/01/29/haptic-feedback-with-uifeedbackgenerator/
мы можем сделать это в Xcode7. 1
import UIKit import AudioToolbox class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() AudioServicesPlayAlertSound(kSystemSoundID_Vibrate) } }
на iOS 10.0+ вы можете попробовать UIFeedbackGenerator
простой viewController выше, просто замените контроллер вида в тесте "single view app"
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 } } }
Swift 4.2 Обновлено
просто вставьте код ниже в ваш проект.
использование
Vibration.success.vibrate()
Исходный Код
enum Vibration { case error case success case warning case light case medium case heavy case selection case oldSchool func vibrate() { switch self { case .error: let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.error) case .success: let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.success) case .warning: let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.warning) case .light: let generator = UIImpactFeedbackGenerator(style: .light) generator.impactOccurred() case .medium: let generator = UIImpactFeedbackGenerator(style: .medium) generator.impactOccurred() case .heavy: let generator = UIImpactFeedbackGenerator(style: .heavy) generator.impactOccurred() case .selection: let generator = UISelectionFeedbackGenerator() generator.selectionChanged() case .oldSchool: AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate)) } } }