石ころです。SNS作っています。下記アドバイス頂けますと幸いです。
ボタンの長押しを開始したらiPhoneを一瞬振動させたいです。
普通のボタンを一回タップする動作に振動を紐付ける場合は教科書通りに書けば上手くいくのですが、長押しというアクションに紐付けようとすると上手くいかず、ご相談させてください。
なお、振動と言っているのは、iPhoneのアラームアプリで時間を上下にスクロールする時や、TwitterやYouTubeでフィードを更新しようとする時に生じる振動を指しています。
下記コードです。
Swift
1 @IBAction func longPress(_ sender: UILongPressGestureRecognizer) { 2 let generator = UIImpactFeedbackGenerator(style: .medium) 3 generator.impactOccurred() 4 5 if(sender.state == .began) {//中略 6} else if (sender.state == .ended) { //中略 7 } 8 } 9
これだと、なぜかボタン長押し開始時に振動するのではなく、長押しを終えて指を離した瞬間に振動が生じます。なお、generatorの2行を、if(sender.state == .began)の中に移すと、今度は一切振動がしなくなってしまいます。
ご助言頂けますと幸いです。お手数ですが、よろしくお願いいたします。
追記
if(sender.state == .began)の中で下記の処理をしています。このコードを消した状態で、代わりにgeneratorの2行を記載したところ、上手く実行されると判明しました。
Swift
1 do { 2 //initialize audio recorder 3 audioRecorder = try AVAudioRecorder(url: filename, settings: settings) 4 audioRecorder.delegate = self 5 audioRecorder.record() 6 buttonLabel.setTitle("Talking", for: .normal) 7 buttonLabel.backgroundColor? = UIColor.gray 8 9 } catch { 10 //うまくいかなかったら 11 displayAlert(title: "Oops", message: "Recording Failed") 12 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/26 14:01
2019/09/26 14:25
2019/09/26 14:35
2019/09/26 14:36