在我的应用程序中,用户界面提供了一个按钮,允许人们撤消他们已经执行的操作,但是一旦他们撤消了一个操作,就无法重做。我现在想更新我的应用程序以支持 Command Z 键盘快捷键撤消。UIKeyCommand
但是,如果我用input: "z"
and创建一个modifierFlags: .command
,它会被忽略并且不会显示为可用的键盘快捷键。似乎必须使用UndoManager
自动获取撤消和重做键盘快捷键。但是重做选项没有做任何事情,所以我想阻止该键盘快捷键出现在用户面前。我试图通过返回 false 来做到这一点,canPerformAction:sender:
但有趣的是并没有删除它。如何在使用 UndoManager 时支持撤消但不支持重做、保持重做堆栈为空或以其他方式隐藏重做选项?
@objc protocol RedoActionRespondable {
func redo(_ sender: Any)
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
switch action {
case #selector(RedoActionRespondable.redo(_:)):
return false
default:
return super.canPerformAction(action, withSender: sender)
}
}
}