不 走 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string方法
(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{ //string就是此时输入的那个字符 textField就是此时正在输入的那个输入框 返回YES就是可以改变输入框的值 NO相反
if ([string isEqualToString:@"\n"]) //按会车可以改变
{
return YES;
}
NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容
if (self.textFieldY == textField) //判断是否时我们想要限定的那个输入框
{
if ([toBeString length] > 1) { //如果输入框内容大于20则弹出警告
textField.text = [toBeString substringToIndex:20];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
return NO;
}
}
return YES;
}
这里有个自己写的demo,可以参考一下
- (IBAction)onTextFieldEditingChanged:(id)sender {
NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage];
NSRange range = NSMakeRange(0, Max_Character_Num);
if ([lang isEqualToString:@"zh-Hans"]) {//如果输入的时中文
UITextRange *selectedRange = [self.tagNameTextField markedTextRange];
UITextPosition *position = [self.tagNameTextField positionFromPosition:selectedRange.start offset:0];
if (!position) {
if (self.tagNameTextField.text.length > Max_Character_Num) {
// self.tagNameTextField.text = [self.tagNameTextField.text substringFrom:0 to:Max_Character_Num];
self.tagNameTextField.text = [self.tagNameTextField.text substringWithRange:range];
}
}
}else{
if (self.tagNameTextField.text.length > Max_Character_Num) {
self.tagNameTextField.text = [self.tagNameTextField.text substringWithRange:range];
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。