如何在iOS 7中禁用表情符号键盘?

6
我想通过编程的方式禁用表情符号键盘。请告诉我如何做到这一点?
我尝试使用以下代码:
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:@"/private/var/mobile/Library/Preferences/com.apple.Preferences.plist"];
[dict setObject:[NSNumber numberWithBool:NO] forKey:@"KeyboardEmojiEverywhere"];

但是没有运气... :(
3个回答

7

您可以简单地将UITextField或UITextView的属性keyboardType设置为UIKeyboardTypeASCIICapable。这将禁用此UI元素的Emoji键盘。

但是,在中文中可能无法工作,我们也有解决办法:

- (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;
}

用户将无法输入任何表情符号。


1
如果我们使用UIKeyboardTypeASCIICapable,就无法支持多语言:(。我想要支持多语言,但表情符号应该被禁用。 - Bhat
currentInputMode在iOS 7中已被弃用。 - hris.to

2
尽管这个问题很老,我也遇到了同样的问题,并且在这个页面加载的时候通过以下小技巧解决了它:

只需在Xcode 8.2.1界面构建器中选择数字和标点符号

enter image description here

输出结果为:无表情符号键盘 =D

enter image description here

我相信它会对某人有帮助 =)

1

被接受的答案很好,但是在iOS 7中,currentInputMode已经被弃用。相反,你可以使用textInputMode,如this SO thread所述:

+(BOOL)isEmojiInput:(UITextView)aTextView
{
    return [aTextView textInputMode] == nil;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接