IOS控制UITextField输入字数

来源:互联网 发布:cf淘宝特卖 编辑:程序博客网 时间:2024/04/28 16:55

先来张图




这是效果图,废话不多说直接上代码

kTextFieldLengthLimit 是字符长度,自己随便定义


  1.    
  2.   
  3. 增加观察者写在viewdidload中添加  
  4. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:nil];  
  5.   
  6.   
  7. - (void)textFieldDidChange:(NSNotification *)obj  
  8. {  
  9.     UITextField * textField = (UITextField *)obj.object;  
  10.       
  11.     NSString *toBeString = textField.text;  
  12.       
  13.     // 键盘输入模式(判断输入模式的方法是iOS7以后用到的,如果想做兼容,另外谷歌)  
  14.     NSArray * currentar = [UITextInputMode activeInputModes];  
  15.     UITextInputMode * current = [currentar firstObject];  
  16.       
  17.     if ([current.primaryLanguage isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写  
  18.         UITextRange *selectedRange = [textField markedTextRange];  
  19.         //获取高亮部分  
  20.         UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];  
  21.         // 没有高亮选择的字,则对已输入的文字进行字数统计和限制  
  22.         if (!position) {  
  23.             if (toBeString.length > kTextFieldLengthLimit) {  
  24.                 textField.text = [toBeString substringToIndex:kTextFieldLengthLimit];  
  25. //                [self showErrorTips:nil message:NSLocalizedString(@"textField_length_limit", nil)];//此方法是我引入的第三方警告框.读者可以自己完成警告弹窗.  
  26.                 [[[UIAlertView alloc] initWithTitle:@"注意" message:@"超过指定字符数" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil nil] show];  
  27.                   
  28.                  
  29.             }  
  30.               
  31.               countLabel.text=[NSString stringWithFormat:@"%lu/20",(unsigned long)textField.text.length];  
  32.         }  
  33.         // 有高亮选择的字符串,则暂不对文字进行统计和限制  
  34.         else{  
  35.               
  36.         }  
  37.     }  
  38.     // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况  
  39.     else{  
  40.         if (toBeString.length > kTextFieldLengthLimit) {  
  41.             textField.text = [toBeString substringToIndex:kTextFieldLengthLimit];  
  42.               
  43.               
  44.              [[[UIAlertView alloc] initWithTitle:@"注意" message:@"超过指定字符数" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil nil] show];  
  45.         }  
  46.           
  47.           countLabel.text=[NSString stringWithFormat:@"%lu/20",(unsigned long)textField.text.length];  
  48.     }  
  49.       
  50. }  
  51.   
  52. -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{  
  53.       
  54.     txtField.text=[txtField.text substringToIndex:kTextFieldLengthLimit];  
  55.       
  56.       
  57. }  
  58. -(void)dealloc{  
  59.      
  60.     [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];  
  61.       
  62.       
  63.       
  64.       
  65. }  


0 0