了解文本字段中的字符打印

时间:2012-01-04 07:12:38

标签: iphone objective-c ios ipad uitextfield

我想知道UITextField中的字符打印

当我开始在文本字段中输入文本时,它在框中输入完美,但在NSLog中它显示错误,它首先显示任何内容。在第二个字符它显示控制台中的第一个字符。我想知道为什么会发生这种情况,我在文本字段中看到了这两个字符。

enter image description here

这是我的textfield delegates方法代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"print %@", textField.text);
    return YES;
}
  // this is my console output
  2012-01-04 12:40:41.736 Demo[1982:f803] print 
  2012-01-04 12:40:43.497 Demo[1982:f803] print h

6 个答案:

答案 0 :(得分:2)

这是正确的行为,因为textField.text的当前vaule在该方法返回YES之前不会更改。如果你想要NSLog显示相同的字符串你可以看到显示然后你必须在范围“范围”中构建它改变字符“字符串”。这就是当你返回YES时textField.text会发生什么,如果你返回NO将会发生什么。

答案 1 :(得分:2)

在调用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string时,您的文本字段值尚未更改,因此您的输出非常正常。

您必须从replacementString:(NSString *)string中获取新字符。

答案 2 :(得分:0)

没错。它是shouldChangeCharacters方法的属性。这可能有所帮助:Getting the Value of a UITextField as keystrokes are entered?

答案 3 :(得分:0)

也许在符号输入之前调用了thes方法。 尝试使用选择器延迟一段时间后调用NSLog。

答案 4 :(得分:0)

_should_...表示尚未发生

使用:

[textField.text stringByReplacingCharactersInRange:range withString:string];

答案 5 :(得分:0)

尝试NSLog:

[textField.text stringByReplacingCharactersInRange:range withString:string];