У меня есть приложение на основе CoreData, которое поддерживает встряхивание для отмены. В настоящее время это работает нормально, однако, когда я встряхиваю устройство, отмена происходит немедленно, без предварительного отображения обычного приглашения отменить, которое NSUndoManager обычно предоставляет бесплатно.
Я прочитал «Использование отмены на iPhone» из документа «Отменить архитектуру», и я:
- реализует
canBecomeFirstResponder
, возвращает YES
- создание контроллера вида
becomeFirstResponder
in viewDidAppear
- создание контроллера вида
resignFirstResponder
in viewDidDisappear
- повторное выделение
self.undoManager
в контроллере представления как чтение / запись
- создание
NSUndoManager
и установка self.undoManager
в методе UIViewController
init
(который, как я проверял, вызывается).
- установка
self.managedObjectModel.managedObjectContext.undoManager
в self.undoManager
в установщике для managedObjectModel
. Опять же, я убедился, что это называется. Если я этого не сделаю, отмена вообще не работает.
Устранение неполадок, которые я уже пробовал:
- проверка отмены действительно работает (я вижу, что изменения в моем managedObjectModel отменены)
- проверка
canBecomeFirstResponder
вызывается
- проверка, вызывается ли аксессор
self.undoManager
во время операции отмены (а это не так).
Итак, мои вопросы:
- при каких обстоятельствах отменяет работу, но не показывает запросы отмены?
- Что бы вы предприняли для устранения этой проблемы?