zoukankan      html  css  js  c++  java
  • 20160107 textfield 的 汉字的限制

    1. 字母数字 textfield、delegate
    2. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

      {

          //string就是此时输入的那个字符 textField就是此时正在输入的那个输入框 返回YES就是可以改变输入框的值 NO相反

          

          if ([string isEqualToString:@" "])  //按会车可以改变

          {

              return YES;

          }

       

          NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容

          

          if (_nameField == textField)  //判断是否时我们想要限定的那个输入框

          {

              NSInteger lengyh=[toBeString length];

              NSLog(@"=length==%zd",lengyh);

              if (lengyh > 20) { //如果输入框内容大于20则弹出警告

                  textField.text = [textField.text substringToIndex:20];

                  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过20位哦!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];

                  [alert show];

                  return NO;

              }

          }

                return YES;

       

      }

       

    3. 有汉字的
    4. #define MAX_STARWORDS_LENGTH 20

      防在  viewdid 中 

          [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldEditChanged:)

                                                      name:@"UITextFieldTextDidChangeNotification" object:_nameField];

       

    5.  

      #pragma mark - Notification Method

      -(void)textFieldEditChanged:(NSNotification *)obj

      {

          UITextField *textField = (UITextField *)obj.object;

          NSString *toBeString = textField.text;

          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 (toBeString.length > MAX_STARWORDS_LENGTH)

                  {

                      textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];

                      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过20位哦!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

                      [alert show];

                      

                  }

              }

              

          }

          // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

          else

          {

              if (toBeString.length > MAX_STARWORDS_LENGTH)

              {

                  NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];

                  if (rangeIndex.length == 1)

                  {

                      textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];

                      

                      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过20位哦!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

                      [alert show];

                  }

                  else

                  {

                      NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];

                      textField.text = [toBeString substringWithRange:rangeRange];

                      NSLog(@"201");

                  }

              }

          }

      }

       

      -(void)dealloc{

          

          [[NSNotificationCenter defaultCenter] removeObserver:self];

          

       

          [[NSNotificationCenter defaultCenter]removeObserver:self

                                                         name:@"UITextFieldTextDidChangeNotification"

                                                       object:_nameField];

      }

    6.  

  • 相关阅读:
    Ubuntu 拦截并监听 power button 的关机消息
    Android 电池管理系统架构总结 Android power and battery management architecture summaries
    Linux 内核代码风格
    Linux 内核工作队列之work_struct 学习总结
    微信小程序 登录流程规范解读
    微信小程序监听input输入并取值
    koala 编译scss不支持中文(包括中文注释),解决方案如下
    阻止冒泡和阻止默认事件的兼容写法
    使用setTimeout实现setInterval
    css实现视差滚动效果
  • 原文地址:https://www.cnblogs.com/gzz2016/p/5109486.html
Copyright © 2011-2022 走看看