У меня есть приложение для рисования. Я хочу реализовать Отменить / Повторить. Хотя я сталкиваюсь с трудностями при сохранении оригинальных и новых значений для отмены / повторения.
С помощью жестов мне нужно хранить несколько вещей: преобразование, центр, для диалога свойств, мне нужно хранить еще много, цвет, шрифт, размер шрифта, контур, цвет контура, сам текст и т. Д.
Я создал NSMutableDictionary
Атрибутов, которые пользователь может изменить в Поповере Одного Жеста / Свойства.
Я хотел использовать Ответ Роба для NSUndoManager
и Жест вращения , хотя использование его решения работает с CGAffineTransform
, который при отправке в качестве параметра для prepareWithInvocationTarget
не является объектом и просто помещает копию структуры CGAffineTransform
в стек Undo / Redo.
Хотя при использовании prepareWithInvocationTarget
с моими NSMutableDictionary
Словари, которые я передаю (OriginalAttribs, newAttribs), не сохраняются. Я не могу иметь их как локальные iVars, так как они будут меняться при каждом действии на рисованном объекте.
Похоже, я хочу использовать retainArguments
как часть NSInvocation
, хотя на самом деле я не хочу их сохранять. Мне нужна их копия.
Это Жесты, которые делают это трудным, так как я не могу продолжать устанавливать OrigianlCenter, OriginalTransform, когда он изменяется, когда жест активен.
UPDATE
Я нашел эту ссылку , и похоже, что я хочу сделать.
Я настроил свой NSUndoManager так:
//Needed to get access to UndoManager
NSUndoManager * undoManager = [(IoScreenEditorViewController * )UIAppDelegate.ioMainViewController.currentViewController undoManager];
//Need to Store our Center as a NSValue
[undoManager prepareWithInvocationTarget:self];
[undoManager forwardInvocation:anInvocation ];
Я тогда получаю ошибку времени выполнения:
-[NSUndoManager undoAttributesWithOriginalAttributes:newAttributes:]: unrecognized selector sent to instance 0xeedcbd0
undoAttributesWithOriginalAttributes:newAttributes:
- это селектор, который я настроил для моего объекта NSInvocation. Согласно документации здесь говорится, что она должна передать ее себе (цели), а не отменить сам менеджер?