看图
iOS7以前我们会使用[UITextInputMode currentInputMode] primaryLanguage]来判断键盘输入的是中文、英文还是emoji表情。
如果primaryLanguage是"en-US"那么输入的是英文,如果是"zh-Hans"那么输入的是中文,如果是"emoji"那么输入的是表情。
iOS7[UITextInputMode currentInputMode] 不被苹果官方建议使用,因此我们需要新的方法来进行相应的判断。
iOS7之后我们使用[textField.textInputMode primaryLanguage]方法来对键盘输入的是中文、英文还是emoji表情进行判断。中英文的判断方式一样,只不过emoji表情的判断方式有些不同。
if ([[textView.textInputMode primaryLanguage] isEqualToString:@"emoji"] || [textView.textInputMode primaryLanguage] == nil) {
NSLog(@"输入的是表情...");
}else{
NSLog(@"输入的不是表情...");
}
多了一个判断为nil的情况。
补充:
使用方法
- (BOOL)stringContainsEmoji:(NSString *)string{
NSUInteger stringUtf8Length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
if(stringUtf8Length >= 4 && (stringUtf8Length / string.length != 3)){
return YES;
}else{
return NO;
}
}
可以使用该方法来判断输入的是不是emoji表情。
swift:
(别人的代码)
var containsEmoji: Bool {
for scalar in unicodeScalars {
switch scalar.value {
case 0x1F600...0x1F64F, // Emoticons
0x1F300...0x1F5FF, // Misc Symbols and Pictographs
0x1F680...0x1F6FF, // Transport and Map
0x2600...0x26FF, // Misc symbols
0x2700...0x27BF, // Dingbats
0xFE00...0xFE0F, // Variation Selectors
0x1F900...0x1F9FF: // Supplemental Symbols and Pictographs
return true
default:
continue
}
}
return false
}
禁止输入表情符号:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print(string)
if string.containsEmoji {
print("输入的是表情...")
return false
} else {
print("输入的不是表情..")
return true
}
}
本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊