码迷,mamicode.com
首页 > 其他好文 > 详细

输入框限制输入表情

时间:2016-07-04 15:37:33      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

  前些日子写项目,测试提出要求要禁止表情的录入,在UITextField这个代理方法中shouldChangeCharactersInRange,只能够限制键盘上的表情不能录入,但是录入时联想上的表情还是能够录入,所以最终用了下边的方法,但是可能还会有问题。

  究其原因,测试说防止数据库的表被注入什么的,但是我感觉这些活是后台要做的,后台直接拿传入的字符串直接作为数据库的查询条件,肯定会有问题的,但是惹不起测试 ,只能够做了限制了!如果有更好的办法,欢迎指正。

- (void)viewDidLoad {

    [super viewDidLoad];

    

    [[NSNotificationCenter defaultCenter]addObserver:self

                                            selector:@selector(textDidChange:)

                                                name:UITextFieldTextDidChangeNotification

                                              object:nil];

}

 

- (void)textDidChange:(NSNotification*)nf{

    UITextField *tf = (UITextField*)nf.object;

    NSString *string  = [self filterEmoji:tf.text];

    if (string) {

        tf.text = string;

    }

}

 

- (NSString*)filterEmoji:(NSString*)text{

    

    NSError *error = nil;

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:NSRegularExpressionUseUnixLineSeparators error:&error];

    NSString *modifiedString = [regex stringByReplacingMatchesInString:text

                                                               options:0

                                                                 range:NSMakeRange(0, [text length])

                                                          withTemplate:@""];

    

    if (![modifiedString isEqualToString:text]) {        

        return modifiedString;        

    }else{        

        return nil;

    }

}

//在此要干掉通知

-(void)dealloc{  

    [[NSNotificationCenter defaultCenter] removeObserver:self];

}

 

输入框限制输入表情

标签:

原文地址:http://www.cnblogs.com/Mr-------Li/p/5640336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!