CGContexts по своей сути не являются «отменяемыми».Вы не можете заполнить прямоугольник или восстановить часть, которую вы нарисовали.Данных просто нет.По моему опыту, лучше всего создать метод «сохранения», который просматривает изменяемую область и сохраняет данные изображения в этой области в стек отмены перед выполнением операций рисования.Затем, когда вы решите отменить, вы можете взять измененный регион и восстановить его из сохраненных данных.
Взято из Как использовать NSUndoManager с UIImageView или CGContext