当前位置:  开发笔记 > IOS > 正文

获取UITextField的值作为击键输入?

如何解决《获取UITextField的值作为击键输入?》经验,为你挑选了3个好方法。

假设我有以下代码:

IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;

greetingLabel一旦用户按任意键,我想要读取"Hello [nameTextField]".

我需要的基本上是iPhone相当于Cocoa委托方法controlTextDidChange.

textField:shouldChangeCharactersInRange:委托方法被称为每个键击发生时:

- (BOOL)              textField:(UITextField *)textField
  shouldChangeCharactersInRange:(NSRange)range     
              replacementString:(NSString *)string

字符串参数返回按下的字符.然而,实际textField的值(nameTextField.text)仍为空白.

我在这里错过了什么?(我想nameTextField反映用户到目前为止输入的确切字符串).



1> PlagueHammer..:

事实证明,最简单的方法是使用Interface Builder:

添加一个IBAction(对于ViewController,比如说,在这种情况下)

在Interface Builder中的UITextField上按住Ctrl键单击(或右键单击)

将"编辑已更改"事件连接到第一步中添加的文件所有者的IBAction.

就像一个魅力:)(我不敢相信我花了很多天在这上面,现在意识到解决方案比我想象的要简单得多:P)


@AlbertRenshaw但是你可以用编程的方式做到这一点;)只需执行`[textField addTarget:self action:@selector(textFieldEditingChanged :) forControlEvents:UIControlEventEditingChanged]`;).
谢谢!我一直在使用"Value Changed",就像你使用UISlider一样.有趣的是他们有两个似乎有相同行为的事件.

2> 小智..:

您可以在文本字段上注册事件UIControlEventEditingChanges的操作:

[nameTextField addTarget:self action:@selector(updateLabelUsingContentsOfTextField:) forControlEvents:UIControlEventEditingChanged];

...

// TODO: error checking

- (void)updateLabelUsingContentsOfTextField:(id)sender {

    greetingLabel.text = [NSString stringWithFormat:@"Hello %@", ((UITextField *)sender).text];

}



3> lostInTransi..:

UITextFieldUITextFieldTextDidChange如果您注册文本,则每次文本更改时都会触发通知.只需注册该通知,并在通知调用的方法中更改标签的文本.

要添加到此,传递给通知处理程序的对象将具有文本UITextField.

希望有所帮助.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有