我正在用UITextView控件实现NSUndoManager。如果我想撤销上次修改的文本,我可以用
// NSUndoManager *myUndoManager; Declared in the header
if (myUndoManager.canUndo) {
[myUndoManager undo];
}
这很简单。但是,如果我像下面这样将剪贴板文本插入TextView控件,myUndoManager。canUndo为空
textview1.text = [[UIPasteboard generalPasteboard] string];
当使用剪贴板文本时,我是否可以撤销文本更改?
谢谢你的帮助。
我想我只需要手动添加文本到堆栈。
- (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;
}