方法"shouldChangeTextInRange"和"stringByReplacingCharactersInRange"如何工作?

Bal*_*ram 3 objective-c textfield nsstring ios

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

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

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

提前致谢!

Fil*_*lic 11

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

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

您检查的代码是否是由此更改产生的字符串超过10个字符,如果是,则委托将返回NO,文本字段内容不会更改.如果结果字符串为10个字符或更少,则委托将返回YES,文本字段的内容将更改为您所在的字符串newString.

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