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
文件拖到您的项目中即可使用它。
要使用 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 文件。