iOS:如何将密钥发送到UITextField?

时间:2011-05-04 15:52:03

标签: objective-c ios uitextfield

我在iOS应用程序中实现了自定义键盘视图。我有几个使用此键盘的UITextField。其中一些UITextField具有覆盖shouldChangeCharactersInRange的委托。但是,如果我的键盘只在文本字段中设置文本值,则不会发送shouldChangeCharactersInRange消息。我认为我需要的是实际执行类似SendKey的操作并将密钥代码发送到UITextField。

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

As I note in my answer hereUITextField符合UITextInput协议。所以你称之为方法:

[textField replaceRange:textField.selectedTextRange withText:text];

有趣的是:""会执行退格,当然," "会占用空间。

这应该自动调用shouldChangeCharactersInRange方法。如果没有,你必须自己做。

如果要在iOS上创建自定义键盘,您肯定需要这样做。

答案 1 :(得分:-1)

听起来键盘负责将shouldChangeCharactersInRange消息发送到UITextField本身,而不仅仅是设置其值。让键盘计算rangestring的值,然后调用:

if ([[theTextField delegate] textField:theTextField shouldChangeCharactersInRange:range replacementString:string])
    theTextField.text = [theTextField.text stringByReplacingCharactersInRange:range withString:string];