我不想在我的應用程序中使用表情符號鍵盤,因此我只想在我的應用程序中禁用它。這裏是從這個鏈接將答案做這件事:iOS 5:如何禁用我的應用程序中的Emoji鍵盤?
但這不在iOS 5的工作(的iOS 4.3做的工作)。有什麼辦法可以禁用iOS 5中的表情符號鍵盤。謝謝。
我不想在我的應用程序中使用表情符號鍵盤,因此我只想在我的應用程序中禁用它。這裏是從這個鏈接將答案做這件事:iOS 5:如何禁用我的應用程序中的Emoji鍵盤?
但這不在iOS 5的工作(的iOS 4.3做的工作)。有什麼辦法可以禁用iOS 5中的表情符號鍵盤。謝謝。
您可以簡單地將UITextField或UITextView的屬性keyboardType
設置爲UIKeyboardTypeASCIICapable
。這將禁用此UI元素的表情符號鍵盤。
@mschluepmann,但設置UIKeyboardTypeASCIICapable無法輸入中國
而且你可以像下面
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (IS_OS_7_OR_LATER) {
if ([textField isFirstResponder]) {
if ([[[textField textInputMode] primaryLanguage] isEqualToString:@"emoji"] || ![[textField textInputMode] primaryLanguage]) { // In fact, in iOS7, '[[textField textInputMode] primaryLanguage]' is nil
return NO;
}
}
} else {
if ([[[UITextInputMode currentInputMode] primaryLanguage] isEqualToString:@"emoji"]) {
return NO;
}
}
return YES;
}
但有時,表情符號可能無法通過表情符號鍵盤輸入。例如,當您鍵入「哈哈」時,它會在鍵盤的標題上顯示錶情符號。在這種情況下,上面的代碼將不起作用。所以,你應該做的兩次檢驗如下:
- (BOOL)isValidString
{
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:NSRegularExpressionCaseInsensitive error:nil];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:self options:NSMatchingWithTransparentBounds range:NSMakeRange(0, [self length])];
if (numberOfMatches > 0) {
return NO;
}
return YES;
}
優秀的解決方案,這應該被標記爲真正的答案。 – 2014-05-23 22:26:33
isValidString方法無法正常工作。它也阻止像德國元音變音(ä,ü,ö)等特殊字符...... :( – Maniac 2014-10-07 10:37:15
我在iOS 7和iOS 8上測試過它,它可以防止歐元符號和法語重音字符。應用程序和觀衆 – 2014-12-03 19:14:29
@ Lapinou的回答幫我,重新發布他的NSString的類別在GitHub上:NSString-RemoveEmoji
工作完全 – Yanchi 2013-10-09 11:06:38
這將禁用像阿拉伯語,希伯來語等語言不過。 – 2014-05-19 18:26:39
感謝這個有用的信息 – 2014-12-05 06:18:39