“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中input的字符数?

提前致谢!

textField:shouldChangeCharactersInRange:replacementString:是UITextFieldDelegate方法,在任何时候文本字段的内容将被调用(input,删除,剪切或粘贴文本到文本字段),询问委托是否允许这个改变。

stringByReplacingCharactersInRange:withString:是一个NSString实例方法,它完全按照它所说的将当前string中的一些文本replace为另一个string,从而创build一个新的string。

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