- (BOOL)stringContainsEmoji:(NSString*)string
{
__blockBOOLreturnValue =NO;
[stringenumerateSubstringsInRange:NSMakeRange(0, [string length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString*substring,NSRangesubstringRange,NSRangeenclosingRange,BOOL*stop) {
constunicharhs = [substringcharacterAtIndex:0];
if(0xd800<= hs && hs <=0xdbff) {
if(substring.length>1) {
constunicharls = [substringcharacterAtIndex:1];
constintuc = ((hs -0xd800) *0x400) + (ls -0xdc00) +0x10000;
if(0x1d000<= uc && uc <=0x1f77f) {
returnValue =YES;
}
}
}elseif(substring.length>1) {
constunicharls = [substringcharacterAtIndex:1];
if(ls ==0x20e3) {
returnValue =YES;
}
}else{
if(0x2100<= hs && hs <=0x27ff) {
returnValue =YES;
}elseif(0x2B05<= hs && hs <=0x2b07) {
returnValue =YES;
}elseif(0x2934<= hs && hs <=0x2935) {
returnValue =YES;
}elseif(0x3297<= hs && hs <=0x3299) {
returnValue =YES;
}elseif(hs ==0xa9|| hs ==0xae|| hs ==0x303d|| hs ==0x3030|| hs ==0x2b55|| hs ==0x2b1c|| hs ==0x2b1b|| hs ==0x2b50) {
returnValue =YES;
}
}
}];
returnreturnValue;
}
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string{
//仅支持数值字母汉字
BOOLret =YES;
for(inti=0; i
NSString* subStr = [stringsubstringWithRange:NSMakeRange(i,1)];
if([selfisValidInput:subStr]==NO) {
ret =NO;
}
}
returnret;
}
-(BOOL)isValidInput:(NSString*)str
{
NSString* match = @"^[A-Za-z0-9-+/=_➋➌➍➎➏➐➑➒\u4e00-\u9fa5]+$";
NSPredicate*predicate = [NSPredicatepredicateWithFormat:@"SELF matches %@", match];
return[predicateevaluateWithObject:str];
}