Ios5 iOS 5:如何在应用程序中禁用表情键盘?

Ios5 iOS 5:如何在应用程序中禁用表情键盘?,ios5,keyboard,emoji,Ios5,Keyboard,Emoji,我不想在我的应用程序中使用表情符号键盘,所以我只想在我的应用程序中禁用它。有一种方法可以通过应用此链接中的答案来实现: 但这在iOS 5上不起作用(iOS 4.3确实起作用)。有没有办法在iOS 5中禁用表情键盘。谢谢。您只需将UITextField或UITextView的属性keyboardType设置为UIKeyboardTypesCapable。这将禁用此UI元素的表情键盘。@mschluepmann,但set-UIKeyboardTypesCapable无法输入中文 你可以像下面这样做

我不想在我的应用程序中使用表情符号键盘,所以我只想在我的应用程序中禁用它。有一种方法可以通过应用此链接中的答案来实现:


但这在iOS 5上不起作用(iOS 4.3确实起作用)。有没有办法在iOS 5中禁用表情键盘。谢谢。

您只需将UITextField或UITextView的属性
keyboardType
设置为
UIKeyboardTypesCapable
。这将禁用此UI元素的表情键盘。

@mschluepmann,但set-UIKeyboardTypesCapable无法输入中文

你可以像下面这样做

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

但有时,表情符号可能无法通过表情符号键盘输入。例如,当您键入“哈哈" 它显示了@Lapinou的回答帮助了我,在github上重新发布了他的NSString类别:

这将禁用阿拉伯语、希伯来语等语言。但是,这不会阻止用户在其中复制粘贴表情。如果文本字段用于电子邮件,并且必须选择键盘类型作为-E-mail地址,该怎么办?很好的解决方案,应该标记为回答正确。isValidString方法不能正确工作。它还阻止特殊字符,如德语umlauts(ä,ü,ö)等…:(我在iOS 7和iOS 8上对此进行了测试,它可以防止使用欧元符号和法语字符。这是我的应用程序和用户的主要障碍。我也遇到了同样的问题。我已经从键盘上禁用了表情符号,但我看到一些用户确实从另一个应用程序(例如:Mail)复制了过去的表情符号。).为了防止复制过去,我在Github上发现了NSSString的一个很好的扩展:希望对您有所帮助;)虽然基于当前键盘的
primaryLanguage
阻止输入是一个快速的解决方案,但它可能会导致一些混乱,因为在执行此检查且表情键盘是第一响应者时,无法向文本字段添加任何内容。例如,粘贴[valid]当表情符号键盘打开时,文本将不起作用。一个更好的解决方案是@Lapinou发布链接的类别,因为它直接检查表情符号的unicode值。