iOS崩溃:在键盘上敲击地球会转到表情符号键盘会导致崩溃

时间:2019-02-13 22:30:39

标签: ios swift crash keyboard emoji

问题

点击uitextfield时显示键盘。一旦键盘出现,它就可以正常工作。我可以将键盘更改为除表情符号键盘以外的任何其他键盘。每次尝试切换到表情符号键盘时,它都会崩溃。

这是崩溃日志

2019-02-13 17:19:01.775380-0500 xxxxxxxx[56054:2366411] libMobileGestalt MobileGestalt.c:1645: Could not retrieve region info
2019-02-13 17:19:01.775648-0500 xxxxxxx56054:2366411] -[NSTaggedPointerString count]: unrecognized selector sent to instance 0xb424b425bd6497ae
2019-02-13 17:19:01.788405-0500 xxxxxxxx[56054:2366411] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString count]: unrecognized selector sent to instance 0xb424b425bd6497ae'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001126831bb __exceptionPreprocess + 331
    1   libobjc.A.dylib                     0x0000000111c21735 objc_exception_throw + 48
    2   CoreFoundation                      0x00000001126a1f44 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x0000000112687ed6 ___forwarding___ + 1446
    4   CoreFoundation                      0x0000000112689da8 _CF_forwarding_prep_0 + 120
    5   CoreFoundation                      0x00000001125b6d38 CFLocaleCopyDisplayNameForPropertyValue + 1000

2 个答案:

答案 0 :(得分:1)

如果使用类似UserDefaults.standard.set("en_US", forKey: "AppleLanguages")的名称,请确保设置一个数组,而不只是一个字符串。您应该改为使用UserDefaults.standard.set(["en_US"], forKey: "AppleLanguages")

如果设置一个字符串,它可以对NSLocale对象做一些奇怪的事情,有效地导致依赖它的任何东西崩溃。 Emoji键盘就是其中之一,因为所有字符都有一个本地化的备用名称,该名称在运行时使用用户设备的Locale进行抓取。

另一方面,建议您不要使用语言设置,而应使用本地化工具,除非您认为用例非常具体。

答案 1 :(得分:0)

enter image description here检查是否关闭了“使用基础国际化”设置,将其打开并清理项目并运行。