@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;
}
पूरी तरह से काम किया – Yanchi
इस तरह अरबी, हिब्रू, आदि भाषाओं को निष्क्रिय कर देगा लेकिन । –
इस उपयोगी जानकारी के लिए धन्यवाद –