zoukankan      html  css  js  c++  java
  • UITextField限制输入长度

    首先,汉字的输入时的联想词在输入到TextFiled时,并不会走

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

    这导致了在这里进行长度限制的代码都会失效.此路不通.

     

    因此我们可以用注册UITextFieldTextDidChangeNotification通知来监测TextField的文字的变化:

    1、注册通知

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
              name:@"UITextFieldTextDidChangeNotification" object:myTextField];

    2、实现 textFiledEditChanged: 方法

    - (void) textFiledEditChanged:(NSNotification *)notification{
         
        UITextField *textField = (UITextField *)obj.object;
        NSString *toBeString = textField.text;
     
        //获取高亮部分
        UITextRange *selectedRange = [textField markedTextRange];
        UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
     
        // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
        if (!position || !selectedRange) {
            if (toBeString.length > MAX_STARWORDS_LENGTH) {
                NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
                if (rangeIndex.length == 1) {
                    textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
                } else {
                    NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
                    textField.text = [toBeString substringWithRange:rangeRange];
                }
            }
        }
    }

    至此,可以完美控制输入字符长度

  • 相关阅读:
    BMP图像信息隐藏
    多项式模2运算及求逆元
    day08 xml tomcat
    day07 c3p0连接池
    day06 多表查询
    java学习日记(day30--dbutils)
    java学习日记(29 JDBC)
    java学习日记(28)-- mysql基础
    activiti主要组件解析
    activiti流程跟踪图算法
  • 原文地址:https://www.cnblogs.com/MasterPeng/p/9692721.html
Copyright © 2011-2022 走看看