限制textField输入表情

@interfaceJQTestViewController()@property(weak,nonatomic)IBOutletUITextField*textField;@property(nonatomic,assign)NSIntegertextLocation;//这里声明一个全局属性,用来记录输入位置@end- (void)viewDidLoad {[superviewDidLoad];self.textField.delegate =self;[self.textField addTarget:selfaction:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged];//注意:textFied没有textFieldDidChanged代理方法,但是有UITextFieldTextDidChangeNotification通知,这里添加通知方法,textView有textFieldDidChanged代理方法,下面用法一样}#pragma mark-- UITextFieldDelegate//在输入时,调用下面那个方法来判断输入的字符串是否含有表情- (void)textFieldDidChanged:(UITextField*)textField{if(textField.text.length >20) {        textField.text = [textField.text substringToIndex:20];        [selfshowMessage:@"不可超过20字!"];    }else{if(self.textLocation ==-1) {NSLog(@"输入不含emoji表情");        }else{NSLog(@"输入含emoji表情");//截取emoji表情前textField.text = [textField.text substringToIndex:self.textLocation];        }    }}- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string{NSLog(@"location-->>%lu",(unsignedlong)range.location);NSLog(@"replacementString-->>%@",string);//禁止输入emoji表情if([selfstringContainsEmoji:string]) {self.textLocation = range.location;    }else{self.textLocation =-1;    }returnYES;}//表情符号的判断- (BOOL)stringContainsEmoji:(NSString*)string {    __blockBOOLreturnValue =NO;    [string enumerateSubstringsInRange:NSMakeRange(0, [string length])                              options:NSStringEnumerationByComposedCharacterSequencesusingBlock:^(NSString*substring,NSRangesubstringRange,NSRangeenclosingRange,BOOL*stop) {constunicharhs = [substring characterAtIndex:0];if(0xd800<= hs && hs <=0xdbff) {if(substring.length >1) {constunicharls = [substring characterAtIndex:1];constintuc = ((hs -0xd800) *0x400) + (ls -0xdc00) +0x10000;if(0x1d000<= uc && uc <=0x1f77f) {                                            returnValue =YES;                                        }                                    }                                }elseif(substring.length >1) {constunicharls = [substring characterAtIndex:1];if(ls ==0x20e3) {                                        returnValue =YES;                                    }                                }else{if(0x2100<= hs && hs <=0x27ff) {                                        returnValue =YES;                                    }elseif(0x2B05<= hs && hs <=0x2b07) {                                        returnValue =YES;                                    }elseif(0x2934<= hs && hs <=0x2935) {                                        returnValue =YES;                                    }elseif(0x3297<= hs && hs <=0x3299) {                                        returnValue =YES;                                    }elseif(hs ==0xa9|| hs ==0xae|| hs ==0x303d|| hs ==0x3030|| hs ==0x2b55|| hs ==0x2b1c|| hs ==0x2b1b|| hs ==0x2b50) {                                        returnValue =YES;                                    }                                }                            }];returnreturnValue;}

你可能感兴趣的:(限制textField输入表情)