问题
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!
回答1:
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.
来源:https://stackoverflow.com/questions/26785466/delete-not-backspace-doesnt-fire-uitextviewdelegates-shouldchangetextinrange