码迷,mamicode.com
首页 > 其他好文 > 详细

UITextField限制输入长度

时间:2018-09-23 16:30:49      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:失效   select   off   输入   file   没有   code   field   edit   

首先,汉字的输入时的联想词在输入到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];
            }
        }
    }
}

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

UITextField限制输入长度

标签:失效   select   off   输入   file   没有   code   field   edit   

原文地址:https://www.cnblogs.com/MasterPeng/p/9692721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!