ios - 使用 NSManager 撤消剪贴板文本

标签 ios ios6 nsundomanager uipasteboard

我正在使用 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;
}

关于ios - 使用 NSManager 撤消剪贴板文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15866055/

相关文章:

ios - 滑动删除无法从左向右滑动

ios - 调用和显示 NSString

iphone - CGAffineTransform 反转 : singular matrix in UIImagePickerController with showsCameraControls = NO

javascript - iPhone 标签栏上的自动化问题

iphone - 两个 managedObjectContext 与一个 managedObject

objective-c - 从 ASIHTTPRequest 切换到 AFNetworking - ASINetworkQueue 问题

ios - 土耳其语字符的 Swift 过滤问题

ios - Facebook 权限 - com.apple.accounts 错误 8

iphone - NSUndoManager 撤消不使用核心数据

iphone - 使用 CoreData 嵌套撤消组