@interfaceJQTestViewController()@property(weak,nonatomic)IBOutletUITextField*textField;@property(nonatomic,assign)NSIntegertextLocation;//這里聲明一個(gè)全局屬性,用來記錄輸入位置@end- (void)viewDidLoad {[superviewDidLoad];self.textField.delegate =self;[self.textField addTarget:selfaction:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged];//注意:textFied沒有textFieldDidChanged代理方法,但是有UITextFieldTextDidChangeNotification通知,這里添加通知方法,textView有textFieldDidChanged代理方法,下面用法一樣}#pragma mark-- UITextFieldDelegate//在輸入時(shí),調(diào)用下面那個(gè)方法來判斷輸入的字符串是否含有表情- (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輸入表情
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- UITextView/UITextField檢測并過濾Emoji表情符號 本人在開發(fā)過程中遇到過這種情況,服務(wù)器端...
- 一、實(shí)現(xiàn)的邏輯很簡單且代碼量不多,直接貼出源碼供方便快速使用。 @property(nonatomic,stron...
- 在沒有出現(xiàn)emoji字符之前,算字符串的長度就很簡單,直接遍歷字符串,找出其中的中文和其他字符直接算出長度即可。但...
- // 過濾所有表情 -(BOOL)stringContainsEmoji:(NSString*)string{ _...