【发布时间】:2020-01-15 19:34:54
【问题描述】:
我正在尝试在 iOS 的 SwiftUI 应用程序中实现撤消,但我无法让撤消手势起作用。这是一个演示问题的示例:
class Model: ObservableObject {
@Published var active = false
func registerUndo(_ newValue: Bool, in undoManager: UndoManager?) {
let oldValue = active
undoManager?.registerUndo(withTarget: self) { target in
target.active = oldValue
}
active = newValue
}
}
struct UndoTest: View {
@ObservedObject private var model = Model()
@Environment(\.undoManager) var undoManager
var body: some View {
VStack {
Toggle(isOn: Binding<Bool>(
get: { self.model.active },
set: { self.model.registerUndo($0, in: self.undoManager) }
)) {
Text("Toggle")
}
.frame(width: 120)
Button(action: {
self.undoManager?.undo()
}, label: {
Text("Undo")
.foregroundColor(.white)
.padding()
.background(self.undoManager?.canUndo == true ? Color.blue : Color.gray)
})
}
}
}
切换开关然后点击撤消按钮可以正常工作。使用三指撤消手势或摇晃撤消不会执行任何操作。你如何绑定系统手势?
【问题讨论】: