iOStext田野(field) 限制输入字符长度和过滤表情符

来源:http://www.boundlesssupremacy.com 作者:win7 人气:128 发布时间:2019-08-08
摘要:iOStext田野同志 限制输入字符长度和过滤表情符号, //扩大修改框 -(void)creatSaveView{                    UILabel * lab = [[UILabel alloc]init];          if (self.searchType == 1) {        la

iOStext田野同志 限制输入字符长度和过滤表情符号,

//扩大修改框

-(void)creatSaveView{

    

    

    

    UILabel * lab = [[UILabel alloc]init];

    

    if (self.searchType == 1) {

        lab.frame = CGRectMake(14, 8 * KWIDTH   64, IPHONE_WIDTH - 100, 16 *KWIDTH);

    }else{

        lab.frame = CGRectMake(14, 8 * KWIDTH, IPHONE_WIDTH - 100, 16 * KWIDTH);

        

    }

 

    

    

    

    lab.text = @"备注名";

    lab.font = [UIFont systemFontOfSize:14];

    lab.textColor = kColor(137, 137, 137);

    

    [self.view addSubview:lab];

    

    

    

    

    

    

    UIView *view=[[UIView alloc] init];

    

    if (self.searchType == 1) {

        view.frame = CGRectMake(0, 32*KWIDTH   64, IPHONE_WIDTH, 40*KWIDTH);

    }else{

        view.frame = CGRectMake(0, 32*KWIDTH, IPHONE_WIDTH, 40*KWIDTH);

        

    }

    

 

    

    

    

    UIView *lineViewlight3=[[UIView alloc] initWithFrame:CGRectMake(0,0,IPHONE_WIDTH, 0.5)];

    lineViewlight3.backgroundColor=kColor(200,200 , 200);

    lineViewlight3.alpha=0.8;

    [view addSubview:lineViewlight3];

    UIView *lineViewlight4=[[UIView alloc] initWithFrame:CGRectMake(0,40*KWIDTH-0.5, IPHONE_WIDTH, 0.5)];

    lineViewlight4.backgroundColor=kColor(200,200 , 200);

    lineViewlight4.alpha=0.7;

    [view addSubview:lineViewlight4];

    view.backgroundColor=[UIColor whiteColor];

    _nameField = [[UITextField alloc]initWithFrame:CGRectMake(10*KWIDTH, 0, IPHONE_WIDTH-15*KWIDTH, 40*KWIDTH)];

    

    _nameField.text = self.NameField;

    _nameField.borderStyle = UITextBorderStyleNone;

    _nameField.clearButtonMode= UITextFieldViewModeAlways;

    

    

    [[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(textFiledEditChanged:)

                                                name:@"UITextFieldTextDidChangeNotification"

                                              object:_nameField];

    

    

    [view addSubview:_nameField];

    [self.view addSubview:view];

    

    

    

}

 

 

-(void)textFiledEditChanged:(NSNotification*)obj{

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

    

    //过滤掉系统表情

//    UITextView * textView;

//    

//    NSRange textRange = [textView selectedRange];

//    [textView setText:[self disable_emoji:[textView text]]];

//    [textView setSelectedRange:textRange];

    

    NSString *toBeString = textField.text;

    

    DSLog(@"-----toBeString  1  ----%@",toBeString);

    

    BOOL isEmoj = [self stringContainsEmoji:toBeString];

    NSString * _showStr;

    

    

    toBeString = [self disable_emoji:toBeString];

    

//    textField.text = toBeString;

    

    DSLog(@"-----toBeString   2  -----%@",toBeString);

 

    

    

    

    NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; //键盘输入方式

    if([lang isEqualToString:@"zh-Hans"]) { //简体汉语输入,包罗简体拼音,健体五笔,简体手写

        UITextRange *selectedRange = [textField markedTextRange];

        //获取高亮部分

        UITextPosition *position = [textFieldpositionFromPosition:selectedRange.start offset:0];

        //未有高亮采纳的字,则对已输入的文字举办字数总括和范围

        if(!position) {

            if(toBeString.length > kHZMaxLength) {

                

             

                

                textField.text = [toBeString substringToIndex:kHZMaxLength];

               

                _showStr = [toBeString substringToIndex:kHZMaxLength];

            }

        }

        //有高亮采取的字符串,则暂不对文字举办总括和限量

        else{

            

        }

    }

    //普通话输入法以外的一直对其总计范围就可以,不思虑别的语种景况

    else{

        if(toBeString.length > kEGMaxLength) {

            

            

            

            textField.text= [toBeString substringToIndex:kEGMaxLength];

            

            _showStr = [toBeString substringToIndex:kEGMaxLength];

        }

    }

    

    DSLog(@"   _showStr   %@",_showStr);

    

    if (isEmoj) {

        

        if ([_showStr length]) {

            

            textField.text = _showStr;

 

        }else{

            textField.text = toBeString;

        }

        

    }

    

}

 

//剖断NSString字符串是还是不是含有emoji表情

- (BOOL)stringContainsEmoji:(NSString *)string

{

    __block BOOL returnValue =NO;

    [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString*substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

        const unichar hs = [substring characterAtIndex:0];

        // surrogate pair

        if (0xd800) {

            if (0xd800 <= hs && hs <= 0xdbff) {

                if (substring.length > 1) {

                    const unichar ls = [substring characterAtIndex:1];

                    const int uc = ((hs - 0xd800) * 0x400) (ls - 0xdc00) 0x10000;

                    if (0x1d000 <= uc && uc <= 0x1f77f) {

                        returnValue =YES;

                    }

                }

            }else if (substring.length > 1) {

                const unichar ls = [substring characterAtIndex:1];

                if (ls == 0x20e3) {

                    returnValue =YES;

                }

            }else {

                // non surrogate

                if (0x2100 <= hs && hs <= 0x27ff) {

                    returnValue =YES;

                }else if (0x2B05 <= hs && hs <= 0x2b07) {

                    returnValue =YES;

                }else if (0x2934 <= hs && hs <= 0x2935) {

                    returnValue =YES;

                }else if (0x3297 <= hs && hs <= 0x3299) {

                    returnValue =YES;

                }else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs ==0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {

                    returnValue =YES;

                }

            }

        }

    }];

    return returnValue;

}

#pragma 马克   ---  过滤表情

 

- (NSString *)disable_emoji:(NSString *)text

{

    NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:@"[^\u0020-\u007E\u00A0-\u00BE\u2E80-\uA4CF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF\u0080-\u009F\u2000-\u201frn]" options:NSRegularExpressionCaseInsensitive error:nil];

    NSString *modifiedString = [regex stringByReplacingMatchesInString:text

                                                               options:0

                                                                 range:NSMakeRange(0, [text length])

                                                          withTemplate:@""];

    return modifiedString;

}

限制输入字符长度和过滤表情符号, //扩大修改框 -(void)creatSaveView{ UILabel* lab = [[UILabelalloc]init]; if(self.searchType==1) { lab.frame=CGRect...

                    }

    }else{

    }

}

    if (self.searchType == 1) {

        }

                // non surrogate

 

                }

    lineViewlight3.backgroundColor=kColor(200,200 , 200);

                }else if (0x2934 <= hs && hs <= 0x2935) {

    }];

        lab.frame = CGRectMake(14, 8 * KWIDTH   64, IPHONE_WIDTH - 100, 16 *KWIDTH);

    

                    const unichar ls = [substring characterAtIndex:1];

    [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString*substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

                

    NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; //键盘输入形式

//    [textView setText:[self disable_emoji:[textView text]]];

                }

    

    

        }

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

    

            textField.text= [toBeString substringToIndex:kEGMaxLength];

 

    }

                        returnValue =YES;

               

    [view addSubview:lineViewlight3];

        view.frame = CGRectMake(0, 32*KWIDTH, IPHONE_WIDTH, 40*KWIDTH);

//扩充修改框

    __block BOOL returnValue =NO;

{

    

    

             

                                                                 range:NSMakeRange(0, [text length])

 

    

    

            if (0xd800 <= hs && hs <= 0xdbff) {

 

    BOOL isEmoj = [self stringContainsEmoji:toBeString];

    _nameField.borderStyle = UITextBorderStyleNone;

                const unichar ls = [substring characterAtIndex:1];

                                                               options:0

        //未有高亮采取的字,则对已输入的文字进行字数总括和范围

        if(!position) {

 

        UITextPosition *position = [textFieldpositionFromPosition:selectedRange.start offset:0];

    

    

    DSLog(@"-----toBeString  1  ----%@",toBeString);

                if (ls == 0x20e3) {

    [[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(textFiledEditChanged:)

    UIView *lineViewlight3=[[UIView alloc] initWithFrame:CGRectMake(0,0,IPHONE_WIDTH, 0.5)];

    

        }else{

                    returnValue =YES;

    

            }

    

    

                    if (0x1d000 <= uc && uc <= 0x1f77f) {

                }else if (0x2B05 <= hs && hs <= 0x2b07) {

                

    }

    if([lang isEqualToString:@"zh-Hans"]) { //简体中文输入,包蕴简体拼音,健体五笔,简体手写

    lineViewlight3.alpha=0.8;

                    returnValue =YES;

    

            

            

    }

{

                }else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs ==0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {

        if ([_showStr length]) {

    lineViewlight4.alpha=0.7;

                    returnValue =YES;

        //获取高亮部分

            }else if (substring.length > 1) {

        // surrogate pair

    _nameField.clearButtonMode= UITextFieldViewModeAlways;

            }else {

    //中文输入法以外的第一手对其计算范围就可以,不酌量任何语种情状

    [self.view addSubview:view];

            

//    

    DSLog(@"-----toBeString   2  -----%@",toBeString);

    

    

        }

//    [textView setSelectedRange:textRange];

                    returnValue =YES;

    

            _showStr = [toBeString substringToIndex:kEGMaxLength];

本文由2020欧洲杯官方投注-2020欧洲杯官方投注网址发布于win7,转载请注明出处:iOStext田野(field) 限制输入字符长度和过滤表情符

关键词: 欧洲杯竞猜 iOS

最火资讯