我在iOS应用程序中实现了自定义键盘视图。我有几个使用此键盘的UITextField。其中一些UITextField具有覆盖shouldChangeCharactersInRange
的委托。但是,如果我的键盘只在文本字段中设置文本值,则不会发送shouldChangeCharactersInRange消息。我认为我需要的是实际执行类似SendKey的操作并将密钥代码发送到UITextField。
有什么建议吗?
答案 0 :(得分:5)
As I note in my answer here,UITextField
符合UITextInput
协议。所以你称之为方法:
[textField replaceRange:textField.selectedTextRange withText:text];
有趣的是:""
会执行退格,当然," "
会占用空间。
这应该自动调用shouldChangeCharactersInRange
方法。如果没有,你必须自己做。
如果要在iOS上创建自定义键盘,您肯定需要这样做。
答案 1 :(得分:-1)
听起来键盘负责将shouldChangeCharactersInRange消息发送到UITextField本身,而不仅仅是设置其值。让键盘计算range
和string
的值,然后调用:
if ([[theTextField delegate] textField:theTextField shouldChangeCharactersInRange:range replacementString:string])
theTextField.text = [theTextField.text stringByReplacingCharactersInRange:range withString:string];