3

我正在使用 UITextView 控件实现 NSUndoManager。如果我想撤消最后的文本更改,我可以这样做

// NSUndoManager *myUndoManager;  Declared in the header

if (myUndoManager.canUndo) {
    [myUndoManager undo];
}

这很简单。但是,如果我将剪贴板文本插入到 TextView 控件中,如下所示,myUndoManager.canUndo 为空。

textview1.text = [[UIPasteboard generalPasteboard] string];

使用剪贴板文本时,我是否可以撤消文本更改?

谢谢您的帮助。

4

1 回答 1

0

我想我只需要手动将文本添加到堆栈中。

- (IBAction)goClicked1:(id)sender {
    NSString *pastetext = [[UIPasteboard generalPasteboard] string];
    [self setText:pastetext];
}

- (void)setText:(NSString *)str {
    NSUndoManager *undoManager = [self undoManager];
    NSString *oldtext = textview1.text;
    [[undoManager prepareWithInvocationTarget:self] setText:oldtext];
    textview1.text = str;
}
于 2013-04-08T21:15:13.030 回答