2013-04-07 64 views
3

我正在用UITextView控件实现NSUndoManager。如果我想撤消上一次文本更改,我可以使用使用NSManager撤消剪贴板文本

// NSUndoManager *myUndoManager; Declared in the header 

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

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

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

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

谢谢你的帮助。

回答

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; 
}