方法“shouldChangeTextInRange”和“stringByReplacingCharactersInRange”如何工作?

时间:2011-09-26 11:24:58

标签: objective-c ios nsstring textfield

我想知道以下代码的工作原理。

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

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

提前致谢!

1 个答案:

答案 0 :(得分:11)

textField:shouldChangeCharactersInRange:replacementString:UITextFieldDelegate方法,只要文本字段的内容即将更改(在文本字段中输入,删除,剪切或粘贴文本),就会调用该方法,询问代表是否要允许这种变化。

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

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