1.寻找输入框
1.UITextField
2.UITextView
(虽然有两种输入框,但解决问题的思路都是一样的)
2.获取监听输入框输入内容的方式
1.使用通知
2.使用代理
3.判断输入内容是否是表情符号(重点)
项目中使用到输入框的地方可能比较多,而且有的输入框并没有做监听。
我的做法:
1.为了能够监听项目中所有的输入框输入内容,我为UITextView和UITextField写了分类,在分类中使用runtime替换了初始化方法,并将代理设置为自己,在分类中监听输入框的内容。
2.全局搜索UITextFieldDelegate和UITextViewDelegate,对使用监听了输入框内容的地方判断输入的内容是否是表情符号。
3.同理搜索全局搜索监听UITextViewTextDidBeginEditingNotification、UITextViewTextDidEndEditingNotification、UITextViewTextDidChangeNotification、UITextFieldTextDidBeginEditingNotification、UITextFieldTextDidChangeNotification、UITextFieldTextDidEndEditingNotification,看是否有通过使用到通知监听输入框内容的地方。
具体判断是否是表情符号的方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if ([self stringContainsEmoji:string]) {
NSLog(@"输入的是表情...");
[AlertTool showTopWithText:@"禁止输入表情符号"];
return NO;
}else{
NSLog(@"输入的不是表情...");
return YES;
}
}
- (BOOL)stringContainsEmoji:(NSString *)string{
NSUInteger stringUtf8Length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
if(stringUtf8Length >= 4 && (stringUtf8Length / string.length != 3)){
return YES;
}else{
return NO;
}
}
网友评论