2011-12-29 11 views
16

私のアプリケーションでEmojiキーボードの余裕が必要ないので、私は自分のアプリケーションでのみそれを無効にしたいと思います。このリンクから答えを適用することによって、それを行うための一つの方法があります:iOS 5:アプリケーションでEmojiキーボードを無効にするにはどうすればよいですか?

Making An Emoji Enabeling App

しかし、iOSの5のこの希望ない仕事(のiOS 4.3は、作業を行います)。 iOS 5で絵文字キーボードを無効にする方法はありますかありがとうございます。

答えて

37

UITextFieldまたはUITextViewのプロパティkeyboardTypeUIKeyboardTypeASCIICapableに設定するだけです。これにより、このUIエレメントのEmoji Keyboardが無効になります。

+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メソッドが正しく機能しません。ドイツ語のウムラウト(ä、ü、ö)などの特殊文字もブロックします。:( – Maniac

+0

iOS 7&iOS 8でこれをテストし、ユーロ記号とフランス語のアクセント付き文字を防ぐことができます。アプリケーションと聴衆 –

関連する問題