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

I guess I just need to add text to the stack manually.

- (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 に答える