触感反馈 (HapticFeedback)

Platforms SPM supported License

特性

SwiftUI 触感反馈 API (iOS 17) 的向后兼容移植。

// Native API. Only works on iOS 17, macOS 14, watchOS 10
.sensoryFeedback(.selection, trigger: value)

// Backport. Compatible with iOS 14, macOS 11, watchOS 7
.hapticFeedback(.selection, trigger: value)

直接播放触感反馈。

// Determines if device supports haptic feedback
HapticFeedback.isAvailable

// Plays selection feedback
HapticFeedback.selection.play()

// Plays impact feedback
HapticFeedback.impact(weight: .heavy, intensity: 0.5).play()

安装

该实现封装在一个单独的文件中,因此您只需将 HapticFeedback.swift 文件拖到您的项目中即可使用它。

要求

Swift 包管理器

要使用 HapticFeedback,请在您的 Package.swift 中添加以下依赖项

.package(url: "https://github.com/dm-zharov/haptic-feedback.git", from: "1.0.0")

最后,将 import HapticFeedback 添加到您的源代码中。

用法

在值更改时触发

当触发值更改时,会播放触感反馈。

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

    var body: some View {
        Button("Backport") {
            showAccessory.toggle()
        }
        .hapticFeedback(.selection, trigger: showAccessory)
    }
}

使用条件闭包触发

为了更好地控制何时触发反馈,请使用视图修饰符的条件闭包版本。

.hapticFeedback(.selection, trigger: showAccessory) { oldValue, newValue in
    return newValue == true
}

使用反馈闭包触发

为了控制播放什么反馈,请使用视图修饰符的反馈闭包版本。

.hapticFeedback(trigger: isFinished) { oldValue, newValue in
    return newValue ? .success : .error
}

沟通

知识

作者

Dmitriy Zharov, contact@zharov.dev

许可证

HapticFeedback 基于 MIT 许可证发布。有关更多信息,请参见 LICENSE 文件