1

我的代码是

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
 NSLog(@"%@",petTypeTextFeild.text);

return YES;
}

当我输入“a”时,没有打印任何内容当我输入下一个字母“s”时,打印“a”我想要全文。

有没有像 textFinishChange 这样的其他方法?谢谢你。

4

3 回答 3

3

使用以下内容:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    NSLog(@"%@",newString);
    return YES;
}
于 2013-01-30T07:15:45.117 回答
1

这是一个在 textField 实际更改其值之前调用的委托,

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

这就是为什么你得到旧值的原因,所以你应该使用这条线来获得确切的价值

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *str = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSLog(@"%@",str);
return YES;
}
于 2013-01-30T07:25:54.663 回答
1

在该方法中,您无法获得全文。如果您返回 Yes,则仅允许该特定字母,如果返回 No,则不允许更改文本。并使用此方法获取完整的文本。

- (void)textFieldDidEndEditing:(UITextField *)textField
于 2013-01-30T07:11:50.613 回答