Contents

sensoryFeedback(trigger:_:)

Plays feedback when returned from the feedback closure after the provided trigger value changes.

Declaration

nonisolated func sensoryFeedback<T>(trigger: T, _ feedback: @escaping () -> SensoryFeedback?) -> some View where T : Equatable

Parameters

  • trigger:

    A value to monitor for changes to determine when to play.

  • feedback:

    A closure to determine whether to play the feedback and what type of feedback to play when trigger changes.

Discussion

For example, you could play different feedback for different state transitions:

struct MyView: View {
    @State private var isExpanded = false

    var body: some View {
        ContentView(isExpanded: $isExpanded)
            .sensoryFeedback(trigger: isExpanded) {
                isExpanded ? .impact : nil
            }
    }
}

When the value changes, the new version of the closure will be called, so any captured values will have their values from the time that the observed value has its new value.

See Also

Providing haptic feedback