18

アプリケーションで絵文字キーボードの許容値を使用したくないので、アプリケーションでのみ無効にします。このリンクからの答えを適用することによってそれを行う1つの方法があります:

絵文字をエナベリングするアプリを作る

ただし、これはiOS 5では機能しません(iOS 4.3は機能します)。iOS5で絵文字キーボードを無効にする方法はありますか。ありがとうございます。

4

3 に答える 3

39

keyboardTypeUITextField または UITextViewのプロパティを に設定するだけですUIKeyboardTypeASCIICapable。これにより、この UI 要素の絵文字キーボードが無効になります。

于 2012-05-23T12:17:34.787 に答える
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;
}

ただし、絵文字キーボードで絵文字を入力できない場合があります。たとえば、「哈哈」と入力すると、キーボードのヘッダーに絵文字が表示されます。その場合、上記のコードは効果がありません。したがって、次のように 2 回検証を行う必要があります。

- (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-03-12T09:22:05.120 に答える
0

@Lapinou の回答が役に立ちました。彼の NSString のカテゴリを github に再投稿しました: NSString-RemoveEmoji

于 2015-07-14T06:08:14.683 に答える