Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delete (not Backspace) doesn't fire UITextViewDelegate's shouldChangeTextInRange

When using an external keyboard, my UITextView fires a shouldChangeTextInRange message just fine when I press the Backspace key ("backward delete"), but if I press Delete ("forward delete") then the method is never called at all, despite the view's text changing as expected. In case it matters, I'm using Swift and the latest iOS simulator.

If this is expected behavior, can someone point me to the documentation that explains it?

More importantly, is there a workaround?

Edit: submitted rdar://18909378. I've also discovered the same behavior when using cmd+backspace and opt+backspace. Very annoying!

like image 750
phu Avatar asked Nov 06 '14 17:11

phu


1 Answers

I'm still seeing this issue on iOS 10. The best workaround I've come up with is to listen to the field's UIControlEventEditingChanged event and grab textField.text from there. This gives you the updated contents, but doesn't allow you to prevent the delete action like shouldChangeCharactersInRange does.

like image 157
jszumski Avatar answered Nov 08 '22 17:11

jszumski