我想知道UITextField中的字符打印
当我开始在文本字段中输入文本时,它在框中输入完美,但在NSLog中它显示错误,它首先显示任何内容。在第二个字符它显示控制台中的第一个字符。我想知道为什么会发生这种情况,我在文本字段中看到了这两个字符。
这是我的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
答案 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];