一致的iPhone应用程序崩溃,编辑的UITextField的时候,iPhone上的键盘敲击地球图标,无论在硬件和仿真

问题描述:

环境一致的iPhone应用程序崩溃,编辑的UITextField的时候,iPhone上的键盘敲击地球图标,无论在硬件和仿真

iPhone模拟器或硬件。 的Xcode 8.3.3 部署目标8.0, 斯威夫特

无法找到一个支持型7键盘与iPhone PortraitChoco-表情keyplane;使用2383677590_PortraitChoco_iPhone-表情符号-Keyboard_Letters

[NSTaggedPointerString计数]:无法识别的选择发送到实例0xa000000000073652

终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因:“ - [NSTaggedPointerString计数]:无法识别的选择发送到实例0xa000000000073652'

第一掷调用堆栈:

0 CoreFoundation      0x0000000110461b0b __exceptionPreprocess + 171 
1 libobjc.A.dylib      0x000000010f4e9141 objc_exception_throw + 48 
2 CoreFoundation      0x00000001104d1134 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 
3 CoreFoundation      0x00000001103e8840 ___forwarding___ + 1024 
4 CoreFoundation      0x00000001103e83b8 _CF_forwarding_prep_0 + 120 
5 CoreFoundation      0x00000001103b403f CFLocaleCopyDisplayNameForPropertyValue + 863 
6 CoreFoundation      0x00000001103b3ccf -[__NSCFLocale displayNameForKey:value:] + 15 
7 EmojiFoundation      0x000000012419fdbf +[EMFEmojiCategory computeEmojiFlagsSortedByLanguage] + 712 
8 EmojiFoundation      0x00000001241979a6 +[EMFEmojiPreferences _cachedFlagCategoryEmoji:] + 256 
9 EmojiFoundation      0x000000012419f922 +[EMFEmojiCategory _emojiSetForIdentifier:] + 351 
10 UIKit        0x00000001121763bc +[UIKeyboardEmojiCategory categoryForType:] + 159 
11 UIKit        0x0000000111cf35fb -[UIKeyboardEmojiCollectionInputView collectionView:numberOfItemsInSection:] + 56 
12 UIKit        0x000000011269697d -[UICollectionViewData _updateItemCounts] + 469 
13 UIKit        0x0000000112699844 -[UICollectionViewData numberOfSections] + 22 
14 UIKit        0x000000011267c0f8 -[UICollectionViewFlowLayout _getSizingInfosWithExistingSizingDictionary:] + 506 
15 UIKit        0x000000011267e088 -[UICollectionViewFlowLayout _fetchItemsInfoForRect:] + 127 
16 UIKit        0x0000000112676ff2 -[UICollectionViewFlowLayout prepareLayout] + 272 
17 UIKit        0x000000011256e428 -[UIKeyboardEmojiLayout prepareLayout] + 50 
18 UIKit        0x0000000112697189 -[UICollectionViewData _prepareToLoadData] + 174 
19 UIKit        0x00000001126979fe -[UICollectionViewData validateLayoutInRect:] + 53 
20 UIKit        0x000000011264033e -[UICollectionView layoutSubviews] + 233 
21 UIKit        0x0000000111cf4fa5 __47-[UIKeyboardEmojiCollectionView layoutSubviews]_block_invoke + 42 
22 UIKit        0x0000000111dbb08e +[UIView(Animation) performWithoutAnimation:] + 90 
23 UIKit        0x0000000111cf4f74 -[UIKeyboardEmojiCollectionView layoutSubviews] + 104 
24 UIKit        0x0000000111dc655b -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1268 
25 QuartzCore       0x00000001119e1904 -[CALayer layoutSublayers] + 146 
26 QuartzCore       0x00000001119d5526 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 370 
27 UIKit        0x0000000111db4334 -[UIView(Hierarchy) layoutBelowIfNeeded] + 1108 
28 UIKit        0x0000000111cf4428 -[UIKeyboardEmojiCollectionInputView didMoveToWindow] + 82 
29 UIKit        0x0000000111dbff01 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1737 
30 UIKit        0x0000000111db2b96 __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 151 
31 Foundation       0x000000010f00b82b -[NSISEngine withBehaviors:performModifications:] + 155 
32 UIKit        0x0000000111db2a98 -[UIView(Hierarchy) _postMovedFromSuperview:] + 855 
33 UIKit        0x0000000111dc2a0a -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1927 
34 UIKit        0x0000000111db0cf8 -[UIView(Hierarchy) addSubview:] + 838 
35 UIKit        0x0000000112572b75 -[UIKBKeyplaneView setState:forKey:] + 1979 
36 UIKit        0x00000001121f06a7 -[UIKeyboardLayoutStar setKeyplaneName:] + 9044 
37 UIKit        0x00000001121f6689 -[UIKeyboardLayoutStar showKeyboardWithInputTraits:screenTraits:splitTraits:] + 482 
38 UIKit        0x0000000111fc76cb -[UIKeyboardImpl finishLayoutChangeWithArguments:] + 518 
39 UIKit        0x0000000111fc7e32 -[UIKeyboardImpl updateLayout] + 1161 
40 UIKit        0x0000000111fbf124 -[UIKeyboardImpl reinitializeAfterInputModeSwitch:] + 160 
41 UIKit        0x0000000111fbe7ec -[UIKeyboardImpl setKeyboardInputMode:userInitiated:updateIndicator:executionContext:] + 975 
42 UIKit        0x0000000111fc011e -[UIKeyboardImpl setInputModeToNextInPreferredListWithExecutionContext:] + 452 
43 UIKit        0x00000001122095a1 -[UIKeyboardLayoutStar completeSendStringActionForTouchUp:withActions:timestamp:interval:didLongPress:prevActions:executionContext:] + 884 
44 UIKit        0x00000001122088b1 -[UIKeyboardLayoutStar completeRetestForTouchUp:timestamp:interval:executionContext:] + 5227 
45 UIKit        0x0000000111ff2bd2 __45-[UIKeyboardLayout touchUpTaskForTouchState:]_block_invoke + 232 
46 UIKit        0x0000000112840782 -[UIKeyboardTaskQueue continueExecutionOnMainThread] + 374 
47 UIKit        0x0000000111ff28ab -[UIKeyboardLayout _touchEndedProcessingForTouches:] + 341 
48 UIKit        0x0000000111d727ea -[UIWindow _sendTouchesForEvent:] + 2707 
49 UIKit        0x0000000111d73f00 -[UIWindow sendEvent:] + 4114 
50 UIKit        0x0000000111d20a84 -[UIApplication sendEvent:] + 352 
51 UIKit        0x00000001125045d4 __dispatchPreprocessedEventFromEventQueue + 2926 
52 UIKit        0x00000001124fc532 __handleEventQueue + 1122 
53 CoreFoundation      0x0000000110407c01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
54 CoreFoundation      0x00000001103ed0cf __CFRunLoopDoSources0 + 527 
55 CoreFoundation      0x00000001103ec5ff __CFRunLoopRun + 911 
56 CoreFoundation      0x00000001103ec016 CFRunLoopRunSpecific + 406 
57 GraphicsServices     0x00000001156e0a24 GSEventRunModal + 62 
58 UIKit        0x0000000111d03134 UIApplicationMain + 159 

解决这个问题的任何线索都会很棒。

这里有更多的信息,请找到下面的图片:

我能够产生一个场景的碰撞没有发生任何更多,从设置删除表情符号键盘后 - 使用下面的步骤>键盘。

  1. 打开设置应用程序。
  2. 转到常规>键盘,然后点击顶部的键盘。 (它旁边会有一个数字 - 这就是您安装的键盘的数量。)
  3. 点击编辑,然后点击表情符号旁边的红色圆圈。
  4. 点击删除。

这个解决方案是不可接受的,我们不能要求我们的客户遵循这些步骤,我们最好有一个解决方案的崩溃。

Emoji Keyboard in Keyboards

After deleting Emoji Keyboard

之前和删除表情符号键盘后:

+0

有趣的发现类似的问题,2年半回,https://stackoverflow.com/questions/27798912/cant-find-keyplane然而,我无法找到有用的线程与我广泛的搜索,希望我不会错过任何东西。 – brbabu

+0

与几个Input元素发生同样的崩溃,例如,UITextView,选择TextView进行编辑,键盘被打开。选择地球图标(按钮),崩溃。另外请注意,选择英语时,点击n地球仪将切换至西班牙语,如果当前语言为西班牙语崩溃,则在Globe上再次点击。 – brbabu

+0

嗨,你有没有设法找到这个解决方案? –

找到针对此问题的解决方案。这或许对我们的项目历史非常具体。不知何故,我们的项目最终出现了一种情况,其中Base.lproj包含en.lproj和es.lproj,而“Use Base Internationalization”设置已关闭,并且在运行时导致崩溃。当我们清理项目时,崩溃消失了。

enter image description here

对我来说,那是因为不正确的AppleLanguages财产;它被设置为NSObject,但不是NSArray。

错误:

NSUserDefaults.StandardUserDefaults["AppleLanguages"] = NSArray.FromObject(new NSString("en-US")); 

应该是:

NSUserDefaults.StandardUserDefaults["AppleLanguages"] = NSArray.FromObjects(new NSString("en-US"));