2014-11-06 78 views
3

当我使用外部键盘时,当按下Backspace键(“后退删除”)时,我的UITextView会触发shouldChangeTextInRange消息,但如果按Delete(“forward delete “),那么尽管视图的文本按预期发生了变化,但方法根本不会被调用。万一它很重要,我使用Swift和最新的iOS模拟器。删除(不Backspace)不会触发UITextViewDelegate的shouldChangeTextInRange

如果这是预期的行为,有人可以指出我解释它的文档吗?

更重要的是,是否有解决方法?

编辑:提交rdar:// 18909378。在使用cmd + backspace和opt + backspace时,我也发现了相同的行为。很烦人!

+0

请提交一份雷达报告问题到http://bugreport.apple.com并编辑您的问题以包含雷达编号以防其他人想引用它。 – 2014-11-07 06:14:11

+0

也经历了这个,并提交rdar:// 20252668,希望这将很快排序 – Joshua 2015-03-22 16:16:43

回答

0

我仍然在iOS 10上看到这个问题。我想到的最好的解决方法是听该字段的UIControlEventEditingChanged事件,并从那里获取textField.text。这会给你更新的内容,但不允许你阻止像shouldChangeCharactersInRange那样的删除操作。

+0

已提交rdar:// 29595896:“UITextField不会调用shouldChangeCharactersInRange作为对转发删除的响应”,这是作为rdar的副本关闭的: // 24966189(仍然打开)。 – jszumski 2016-12-14 14:10:05

相关问题