2011-12-29 14 views
16

मैं अपने आवेदन में इमोजी कीबोर्ड भत्ता नहीं चाहता हूं इसलिए मैं इसे केवल अपने आवेदन में अक्षम करना चाहता हूं। एक तरह से इस लिंक से जवाब लगाने से यह करने के लिए नहीं है:आईओएस 5: मैं अपने आवेदन में इमोजी कीबोर्ड कैसे अक्षम कर सकता हूं?

Making An Emoji Enabeling App

लेकिन यह होगा नहीं iOS 5 पर काम (आईओएस 4.3 काम करते हैं)। आईओएस 5 में इमोजी कीबोर्ड को अक्षम करने का कोई तरीका है 5. धन्यवाद।

उत्तर

37

आप UITextField या UITextView की संपत्ति keyboardType को UIKeyboardTypeASCIICapable पर सेट कर सकते हैं। यह इस यूआई तत्व के लिए इमोजी कीबोर्ड को अक्षम करता है।

+0

पूरी तरह से काम किया – Yanchi

+8

इस तरह अरबी, हिब्रू, आदि भाषाओं को निष्क्रिय कर देगा लेकिन । –

+0

इस उपयोगी जानकारी के लिए धन्यवाद –

17

@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; 
} 
+0

उत्कृष्ट समाधान, इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। –

+0

isValidString विधि सही तरीके से काम नहीं करती है। यह जर्मन umlauts (ä, ü, ö) और इसी तरह के विशेष पात्रों को भी अवरुद्ध करता है ... :( – Maniac

+0

मैंने आईओएस 7 और आईओएस 8 पर इसका परीक्षण किया और यह यूरो प्रतीक और फ्रेंच उच्चारण वाले पात्रों को रोकता है। यह मेरे लिए एक प्रमुख अवरोधक है आवेदन और दर्शक। –

0

@ Lapinou का जवाब मुझे मदद की, GitHub पर NSString के बारे में उनकी श्रेणी repost: NSString-RemoveEmoji

संबंधित मुद्दे