2011-09-26 42 views
3

我想知道下面的代码的工作。“shouldChangeTextInRange”和“stringByReplacingCharactersInRange”方法是如何工作的?

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    return !([newString length] > 10); 
} 

“stringByReplacingCharactersInRange”是做什么的?以上方法如何限制可以在textField中输入的字符数?

在此先感谢!

回答

11

textField:shouldChangeCharactersInRange:replacementString:UITextFieldDelegate随时调用的方法文本字段的内容即将更改(输入,删除,剪切或粘贴文本到文本字段中),询问委托人是否要允许此更改。

stringByReplacingCharactersInRange:withString:是一个NSString实例方法,完全按照它的说法使用另一个字符串替换当前字符串中的某些文本,从而创建一个新字符串。

您检查的代码是否会由于此更改而导致的字符串长于10个字符,如果是,委托将返回NO并且文本字段内容不会更改。如果生成的字符串不超过10个字符,代表将返回YES,并且文本字段的内容将更改为您在newString中获得的相同字符串。

+0

谢谢!但是,在上面的代码中'范围'的值是什么? – Balaram

+2

一个包含起始字符索引和将被替换的字符串部分长度的'NSRange'结构。如果用户正在输入文本,range.location将是最后一个字符的索引+ 1,并且range.length将是1.如果用户正在删除所选文本,则range.location将是第一个选定字符的索引,并且range.length将为选定的字符数。 –

+0

好吧..假设如果textField是空的,并且用户正在输入文本,那么“范围”将有用户输入的字符长度? – Balaram

相关问题