限制特殊字符时需要注意九宫格输入问题
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSString *newString = [searchBar.text stringByReplacingCharactersInRange:range withString:text];
// 区分九宫格
NSString *other = @"➋➌➍➎➏➐➑➒";
if ([newString isEqualToString:@" "]||([self hasIllegalCharacter:text]&&!([other rangeOfString:text].location != NSNotFound))) {
return NO;
}
if (newString.length>20) {
[[UPOCHudUtils shareInstance] toggleMessage:@"最多输入20个字符"];
return NO;
}
return YES;
}
- (void)searchBarSearchButtonClicked:(UISearchBar*)searchBar{
NSString * text =searchBar.text;
self.searchBar.text = text;
if (text != nil || [text length] > 0) {
if ([text length] < 2) {
//判断是否是中文
if ([NSStringVerify isChinese:text] ) {
[[UPOCHudUtils shareInstance] toggleMessage:@"请输入完整的老师姓名"];
return;
}
[[UPOCHudUtils shareInstance] toggleMessage:@"至少输入两个字符"];
return;
}
}else
{
}
}
//正则匹配
- (BOOL)hasIllegalCharacter:(NSString *)content {
//提示标签不能输入特殊字符
if ([content containsString:@"\n"]||[content isEqualToString:@""]) {
return NO;
}
NSString *str =@"^[A-Za-z0-9\\u4e00-\u9fa5]+$";
NSPredicate* emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", str];
if (![emailTest evaluateWithObject:content]) {
return YES;
}
return NO;
}
//中文
+ (BOOL)isChinese:(NSString *)string
{
NSString *match = @"(^[\u4e00-\u9fa5]+$)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];
return [predicate evaluateWithObject:string];
}