免费开源的iOS开发学习平台

UITextField详解:4-UITextField的代理方法实例之字数限制

在用户输入的过程中,我们有时希望对用户的输入行为进行一些限制,比如:当输入的是手机号码时,只允许输入11位数字,或者对用户的输入文字数量进行限制,比如说提交的用户意见反馈,只允许输入不多余200个汉字。此时,我们就需要使用UITextFieldDelegate中的代理方法实现键盘的字数限制功能。

在UITextFieldDelegate代理协议中,定义了textField:shouldChangeCharactersInRange:replacementString:方法,当用户在一个UITextField对象中输入内容时,该方法会被持续的调用,即每次输入都会调用该方法。通过该代理协议,我们可以监控用户的输入过程,并且对于用户的输入内容进行控制。该方法中提供了两个参数,其中range可以获取当前输入内容的长度,string可以获取输入的内容。当用户输入的内容长度超出预期时,需要给用途提示。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

如下图所示,通过该代理方法,我们可以获取到用户每次输入的内容。

示例代码

下方的示例代码,实现了对一个UITextField对象的输入内容长度进行了限制。我们继续使用上一章节中的代码,在其中添加textField:shouldChangeCharactersInRange:replacementString:方法的功能实现。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if(range.location - range.length >= 3) {
        NSLog(@"字数超出限制,无法继续输入!");
        return NO;
    }else {
        NSLog(@"字数未超出限制,可以继续输入!");
        return YES;
    }
}

运行结果如下,我们对输入框输入的内容长度限制为3,当我们输入的内容长度超过3时,就不再允许我们输入了。

https://github.com/99ios/7.7.4