@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输入表情
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- UITextView/UITextField检测并过滤Emoji表情符号 本人在开发过程中遇到过这种情况,服务器端...
- 一、实现的逻辑很简单且代码量不多,直接贴出源码供方便快速使用。 @property(nonatomic,stron...
- // 过滤所有表情 -(BOOL)stringContainsEmoji:(NSString*)string{ _...