Есть два шага, которые мне нужно было сделать здесь, чтобы сделать эту работу. Первым было вернуть диспетчер отмены моего документа в качестве диспетчера отмены контроллера представления со следующим:
override var undoManager: UndoManager? { return document.undoManager }
Вторым было заставить контроллер представления стать первым респондентом, как рекомендовано в статье NSHndoManager NSHipster. в разделе об ответе на более старый жест встряски:
override var canBecomeFirstResponder: Bool { true }
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
becomeFirstResponder()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
resignFirstResponder()
}
Я все еще ищу дополнительный код, чтобы гарантировать, что контроллер представления восстанавливает свой статус первого ответчика после представления контроллера предупреждений, содержащего текст поле, но это реально другая проблема.