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];
                }
            }
        }
    }

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

  • 相关阅读:
    Outlook同步问题
    Excel下三角图解的绘制
    数据库,SQL,万恶之源?
    新年第一篇
    ArcGIS的GeoProcessing的原理及实现(1)
    如何在多个文件中查找需要的信息
    关于GIS门户(GIS Portal)的概念
    2004总结
    MapViewControl更新
    GCDPlot 0.22 介绍
  • 原文地址:https://www.cnblogs.com/MasterPeng/p/9692721.html
Copyright © 2011-2022 走看看