Menu

HapticFeedback

Skip support for SwiftUI.SensoryFeedback.

The following example screens and source code is from SkipUI’s Showcase sample app HapticFeedbackPlayground.swift

import SwiftUI

struct HapticFeedbackPlayground: View {
    var body: some View {
        ScrollView {
            VStack {
                #if os(macOS)
                #else
                Button("Impact: Soft") {
                    UIImpactFeedbackGenerator(style: .light).impactOccurred()
                }
                .tint(.cyan)
                Button("Impact: Medium") {
                    UIImpactFeedbackGenerator(style: .medium).impactOccurred()
                }
                .tint(.teal)
                Button("Impact: Heavy") {
                    UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
                }
                .tint(.indigo)

                Divider()

                Button("Impact Intensity: 20%") {
                    UIImpactFeedbackGenerator().impactOccurred(intensity: 0.2)
                }

                Button("Impact Intensity: 40%") {
                    UIImpactFeedbackGenerator().impactOccurred(intensity: 0.4)
                }

                Button("Impact Intensity: 60%") {
                    UIImpactFeedbackGenerator().impactOccurred(intensity: 0.6)
                }

                Button("Impact Intensity: 80%") {
                    UIImpactFeedbackGenerator().impactOccurred(intensity: 0.8)
                }

                Button("Impact Intensity: 100%") {
                    UIImpactFeedbackGenerator().impactOccurred(intensity: 1.0)
                }

                Divider()

                Button("Selection: Changed") {
                    UISelectionFeedbackGenerator().selectionChanged()
                }

                Divider()

                Button("Notification: Success") {
                    UINotificationFeedbackGenerator().notificationOccurred(.success)
                }
                .tint(.green)

                Button("Notification: Warning") {
                    UINotificationFeedbackGenerator().notificationOccurred(.warning)
                }
                .tint(.yellow)

                Button("Notification: Error") {
                    UINotificationFeedbackGenerator().notificationOccurred(.error)
                }
                .tint(.red)
                #endif
            }
            .buttonStyle(.borderedProminent)
            .bold()
        }
        .toolbar {
            PlaygroundSourceLink(file: "HapticFeedbackPlayground.swift")
        }
    }
}