Не могу успешно зарегистрировать отмену из NSTextField - PullRequest
2 голосов
/ 03 сентября 2010

У меня есть простое основанное на документе приложение, которое просто создает пользовательский файл XML.Он использует Outline View для навигации по документу XML.При выборе элемента в представлении контура пользовательское представление отображается как вспомогательное представление представления документа, которое позволяет пользователю вводить данные.На одном из представлений есть NSTextField.У него установлен флаг «Разрешить отмену».Я проверил, чтобы гарантировать, что undoManager вызывается на NSDocument, когда редактирование завершено.Таким образом, элемент управления, кажется, прыгает через первого ответчика, как и должно быть.

В IBAction я использую ActionName, чтобы он правильно отображался в меню.Теперь вот проблема.Мало того, что ActionName не отображается в меню, но нажатие отмены не отменяет действие, выполненное в NSTextField, но действие, зарегистрированное непосредственно перед ним.Есть ли что-то, что я упустил при настройке отмены с помощью NSTextField?

(IBAction) textFieldChanged: (id) sender {

... некоторый код здесь ...

[[self undoManager] setActionName: @ "Изменить текст"];

}

Заранее спасибо, Роб

1 Ответ

1 голос
/ 03 сентября 2010

Является ли текстовое поле в том же окне, что и ваш контурный вид (т. Е. Главное окно документа)? Если нет, вам нужно установить делегат для этого дополнительного окна и ответить на -windowWillReturnUndoManager: , вернув менеджер отмены документа.

Поскольку вы говорите, что к вашему документу вызывается -undoManager, я полагаю, что это не так. Я никогда не знал, чтобы в текстовом поле не использовался менеджер отмены документа, когда он находится в главном окне документа и установлен флажок Разрешить отмену. Вы пробовали что-то столь же простое, как удаление поля и воссоздание его? Иногда IB делает какие-то странные вещи ... достаточно забавно, эти проблемы, как правило, возникают при отмене / возврате изменений в самом Интерфейсном Разработчике. : -)

...