ios 表情符号 键盘_在iOS 13上默认显示系统Emoji键盘

Solution

Here is a full solution/work around for this issue, please up vote Blld's answer as well because this was the vital bit of info needed!

Alternative titles to aid search

Showing the Emoji keyboard as default for a UIKeyInput object (in iOS 13)

Force iOS 13 to show the Emoji keyboard

Setting the UITextInputMode.primaryLanguage to emoji

Programatically set the keyboard to emoji

Prior to ios13 returning the UITextInputMode with primaryLanguage that equaled "emoji" would default to showing the Emoji Keyboard (see image below).

Example code for returning the "emoji" UITextInputMode.

//

// ViewController.swift

// Keyboard Info

//

// Created by Richard Stelling on 30/09/2019.

// Copyright © 2019 Richard Stelling. All rights reserved.

//

import UIKit

class TestButton: UIButton, UIKeyInput {

var hasText: Bool = true

func insertText(_ text: String) { print("\(text)") }

func deleteBackward() {}

override var canBecomeFirstResponder: Bool { return true }

override var canResignFirstResponder: Bool { return true }

override var textInputMode: UITextInputMode? {

for mode in UITextInputMode.activeInputModes {

if mode.primaryLanguage == "emoji" {

return mode

}

}

return nil

}

}

Running this code on iOS 12 will set the keyboard to the system Emoji Keyboard, but on iOS 13 it has no affect.

Is this a known bug? Is there a workaround?

Updates

Requested by @Navillus, the full list of "active input modes" is; "en-GB", "emoji"

Tested and confirmed on; 13.0, 13.1, 13.1.1, 13.1.2 and 13.2 (seed 1)

解决方案NB: Make sure you have the Emoji keyboard enabled.

This seems to be an iOS 13 bug, the work around (for devices, this does not affect the Simulator) is to override the textInputContextIdentifier property and return a non-nil value.

//

// ViewController.swift

// Keyboard Info

//

// Created by Richard Stelling on 30/09/2019.

// Copyright © 2019 Richard Stelling. All rights reserved.

//

import UIKit

class TestButton: UIButton, UIKeyInput {

var hasText: Bool = true

override var textInputContextIdentifier: String? { "" } // return non-nil to show the Emoji keyboard ¯\_(ツ)_/¯

func insertText(_ text: String) { print("\(text)") }

func deleteBackward() {}

override var canBecomeFirstResponder: Bool { return true }

override var canResignFirstResponder: Bool { return true }

override var textInputMode: UITextInputMode? {

for mode in UITextInputMode.activeInputModes {

if mode.primaryLanguage == "emoji" {

return mode

}

}

return nil

}

}

Thanks to blld for his answer.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值