【问题标题】:Multiple operation with Undo function in objective C目标C中具有撤消功能的多重操作
【发布时间】:2018-09-03 15:04:26
【问题描述】:

我有一个效果很好的撤消功能。我的应用程序是具有多种效果的照片编辑器。当我为我的照片添加多个效果并撤消所有这些效果时,它的效果非常好,但是当我想再次添加过滤器/效果并且我想再次撤消它时它不起作用。我的意思是我的撤消功能只工作一次。

谁能告诉我为什么它只工作一次?

有我的功能在起作用:

- (void)updateImage:(UIImage*)Images { [undoManager registerUndoWithTarget:self 选择器:@selector(updateImage:) object:Images]; _imageView.image = 图片; } - (void)pushedUndoBtn:(id)sender { [undoManager 撤消]; }

我如何引用我的撤消管理器:

@implementation _CLImageEditorViewController { NSUndoManager * undoManager; } - (void)viewDidLoad { [超级视图DidLoad]; undoManager = [[NSUndoManager alloc] init]; }

【问题讨论】:

  • 你的 undoManager 是如何存储在你的类中的?你对它有强烈的引用吗?
  • 我添加了更多关于我如何参考的代码。谢谢

标签: ios objective-c nsundomanager


【解决方案1】:

您应该将旧图像 (_imageView.image) 传递给 -registerUndoWithTarget:selector:object:,而不是新图像 (Images)。您希望撤消操作使用旧图像调用-updateImage: 以恢复旧状态。所以:

    [undoManager registerUndoWithTarget:self selector:@selector(updateImage:) object:_imageView.image];

【讨论】:

  • 我试着用我的基本英语来解释。实际上我可以撤消,它可以工作,但是当我再次添加过滤器并再次撤消时,它不起作用。我只能单击一次撤消按钮。在我不工作之后。
  • 你试过我的建议了吗?
猜你喜欢
  • 2011-01-07
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
相关资源
最近更新 更多