[textField addTarget:self action:@selector(handleTextFieldEditAction:) forControlEvents:UIControlEventEditingChanged];
//UITextField 添加target监听事件
- (void)handleTextFieldEditAction:(UITextField *)textField {
NSString *lang = [textField.textInputMode primaryLanguage];
if ([lang isEqualToString:@"zh-Hans"]) {
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
if (!position) {
if (textField.text.length >20) {
textField.text = [textField.text substringToIndex:20];
}
}
}else{
if (textField.text.length >=20) {
textField.text = [textField.text substringWithRange:NSMakeRange(0, 20)];
}
}
}
#pragma mark --UITextFieldDelegate
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string isValidateNickName] || string.length == 0) {
return YES;
}
return NO;
}
//正则表达式允许输入中英文,中划线,下划线
-(BOOL)isValidateNickName
{
if (self.length == 0) {
return NO;
}
NSString *regex = @"^[a-zA-Z0-9_\\-\u4e00-\u9fa5]+$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
if ([pred evaluateWithObject:self]) {
return YES;
}
return NO;
}
效果图: