恢复目标c中的问题



我正在实现一个用于富文本编辑的格式栏。其中我有两个按钮撤消和恢复。我有关于苹果开发人员的文档,但无法使Redo工作。问题是我有一个UITextView。每当用户写入每个单词时,都会在[textView undoManager]中注册为撤消操作,如shouldChangeTextInRange中所示。

当用户单击Undo按钮时,它通过代码[[_myTextView undoManager]Undo]成功完成。但当用户单击"重做"按钮时,不会执行重做。

当用户点击redo时,我甚至打印了这个名字,比如[[_myTextView undoManager]redoActionName],它会打印"Change",Action的名字。但是在TextView的文本上什么也没发生。

我已经搜索了很多,但在每种情况下,人们都在使用接口生成器进行撤消和自动重做,但我使用的是代码。还要注意,即使在Ipad上,在我用键盘按钮撤消后,键盘上的内置按钮也无法进行重做。请引导我。

-(BOOL) textView: (UITextView *)textView shouldChangeTextInRange:(NSRange) range replacementText: (NSString *) text{
    [[textView undoManager] registerUndoWithTarget:self selector:@selector(revertTextView:) object:textView.attributedText];
    [[textView undoManager] setActionName:NSLocalizedString(@"Change",@" undo")];
}
-(void) revertTextView: (NSAttributedString *) textViewAttString{
    _myTextView.attributedText = textViewAttributedString;
}
-(IBAction) undoClick{
    [[_myTextView undoManager] undo];
}
-(IBAction) redoClick{
    [[_myTextView undoManager] redo];
}

不要调用任何寄存器
TextView已经有NSUndoManager,并且已配置

你需要做的是

- (IBAction)undoPressed
{
    [[self.myTextView undoManager] undo];
}
- (IBAction)redoPressed
{
    [[self.myTextView undoManager] redo];
}

相关内容

  • 没有找到相关文章

最新更新