iOS 5:如何在我的应用程序中禁用表情符号键盘?

发布于 2024-12-23 09:37:28 字数 266 浏览 3 评论 0原文

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

制作表情符号启用应用程序

但这在 iOS 5 上工作(iOS 4.3 可以工作)。有没有办法在 iOS 5 中禁用表情符号键盘。谢谢。

I don't want the Emoji keyboard allowance in my application so I want to disable it only in my application. There is one way to do it by applying the answer from this link:

Making An Emoji Enabeling App

But this would not work on iOS 5 (iOS 4.3 do work). Is there any way to disable Emoji keyboard in iOS 5. Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

待天淡蓝洁白时 2024-12-30 09:37:28

您只需将 UITextField 或 UITextView 的属性 keyboardType 设置为 UIKeyboardTypeASCIICapable 即可。这会禁用此 UI 元素的表情符号键盘。

You can simply set the property keyboardType of the UITextField or UITextView to UIKeyboardTypeASCIICapable. This disables the Emoji Keyboard for this UI element.

浅暮の光 2024-12-30 09:37:28

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

但是有时,表情符号可能无法通过表情符号键盘输入。例如,当您输入“哈哈”时,键盘标题上会显示

@mschluepmann, But set UIKeyboardTypeASCIICapable can not input Chinese

And you can do it like below

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

But sometimes, the emoji may not entered by emoji keyboard. For example, when you type "哈哈" it shows ???? emoji on the header of the keyboard. In the case, the code above will make no effect. So you should do a twice validation as following:

- (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;
}
罪歌 2024-12-30 09:37:28

@Lapinou 的回答对我有帮助,在 github 上重新发布他的 NSString 类别: NSString-RemoveEmoji

@Lapinou's answer helped me, repost his category of NSString on github: NSString-RemoveEmoji

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文