1

私はSwiftとプログラミングに非常に慣れていません。UILongPressGestureRecognizer によってトリガーされる触覚フィードバックのパターンを作成しようとしています。ユーザーが画面を「長押し」すると、各振動の間に 1 秒の遅延で電話が 3 回振動するようにします。「スリープ」を使用して 1 秒の遅延を達成しようとしましたが、これは機能しませんでした。これを正しく行うための最良の方法は何ですか?

var feedbackGenerator : UIImpactFeedbackGenerator? = nil

func performFeedbackPattern() {

    //create the feedback generator
    feedbackGenerator = UIImpactFeedbackGenerator(style: .heavy)
    feedbackGenerator?.prepare()

    //play the feedback three times with 1 second between each feedback
    feedbackGenerator?.impactOccurred()
    sleep (1)
    feedbackGenerator?.impactOccurred()
    sleep (1)
    feedbackGenerator?.impactOccurred()
}


@IBAction func gestureRecognizer(_ sender: UILongPressGestureRecognizer) {
    switch sender.state {
        case .began:
            performFeedbackPattern()
        default: break
    }
4

2 に答える 2

-1

OperationQueue触覚フィードバックを使用して操作を作成および追加できます。操作は次のようになります。

class HapticFeedbackOperation: Operation {
    override func main() {
        // Play the haptic feedback
        UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
    }
}

操作の間に遅延を追加したい場合があります。

私のオープンソース フレームワークHapticaをチェックHaptic FeedbackしてAudioServicesください。Swift 4.2、Xcode 10 で動作

于 2019-01-28T10:13:19.863 に答える