2012-07-23 25 views
26

我只是问a question有关如何监视变为UITextField并得到这样的响应:知道完整的改变字符串文本框:shouldChangeCharactersInRange:replacementString:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementStr { 
    // Enable "Next" if you like what's entered in the replacementStr 
} 

这工作,但替换字符串不整字符串,就是它添加的内容。我怎样才能得到整个字符串?我的目标是查看文本字段中的字符串是空白还是等于某个数字(在不同的场景中)。

请注意,在这种情况下,文本字段的出口不起作用,因为在字段中的文本发生更改之前调用此方法。

+0

的TextField.text是整个字符串。至少它是整个旧弦。 – 2012-07-23 01:01:44

回答

65
NSString * proposedNewString = [[textField text] stringByReplacingCharactersInRange:range withString:replacementString]; 
+1

如果他们使用退格怎么样?这会继续吗?当我尝试追加时它不起作用。如果他们退格,没有替换字符串,但textField字符串将少一个。如果我检查一个非零数字,并且textField是5,那么这可能会出现问题,然后他们退格。 – 2012-07-23 01:06:13

+3

是的,它适用于退格。 – 2012-07-23 01:13:09

0
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

// [textField2 setText:[textField1.text stringByReplacingCharactersInRange:range withString:string]]; 
    NSLog(@"%@",searchStr); 
    return YES; 
} 
9

斯威夫特版本

斯威夫特我们需要textField's文本转换为NSString。下面可能是有用的:

let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) 

夫特4

let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string) 
相关问题