Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS - UITextView + NSUndoManager

I'm trying to integrate the undo/redo features in a UITextView (I'm building a LateX editor) with no luck and to be honest I'm really confused about this argument. I don't understand the steps involved in those two operations, I mean I need two methods

  • one to remove the last inserted text
  • one to restore the text removed

One doubt is where I get the last inserted text? in other words where I have to register for the undo?

  • in textViewDidChange I can get the whole text
  • in textViewShouldChangeTextInRange I can get the last char inserted

I know that what I wrote wasn't the best explanation ever, But I hope someone here has faced the same problem in the past and can give me an hint. Basically ,to resume, I have to add the undo/redo features to a textview, possibly having two buttons linked with those actions.

Thanks in advance

like image 286
oiledCode Avatar asked Feb 22 '11 14:02

oiledCode


1 Answers

I'm feeling like an idiot right now :( the solution was really really easy... The textView has already an undoManager so basically the steps to have undo/redo actions for a textView are : inside viewDidload :

myUndoManager = [textView undoManager];

where you want to perform the actions

[myUndoManager undo]; // or redo

I'm really dumb sometimes, I was almost writing my own undo code... I hope this can help someone

like image 131
oiledCode Avatar answered Nov 17 '22 12:11

oiledCode