美文网首页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