美文网首页iOS常用
iOS开发中要求项目所有的输入框都不能输入表情符号

iOS开发中要求项目所有的输入框都不能输入表情符号

作者: 梁森的简书 | 来源:发表于2020-06-16 14:34 被阅读0次

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;
}
}

相关文章

网友评论

    本文标题:iOS开发中要求项目所有的输入框都不能输入表情符号

    本文链接:https://www.haomeiwen.com/subject/dnglxktx.html