Sequential iPhone app conflict while editing UITextField by clicking Globe icon on iPhone Keyboard, both hardware and Simulator

Environment

iPhone Simulator or hardware. Xcode 8.3.3 Deployment target 8.0, Swift

Unable to find keyplane that supports type 7 for iPhone-PortraitChoco-Emoji keyboard; using 2383677590_PortraitChoco_iPhone-Emoji-Keyboard_Letters

[NSTaggedPointerString count]: unrecognized selector sent to instance 0xa000000000073652

Application terminated due to uncaught "NSInvalidArgumentException", reason: '- [NSTaggedPointerString count]: unrecognized selector sent to instance 0xa000000000073652'

First call stack:

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

      

Any hints on how to fix this issue would be great.

Here are more details, please find the following pictures:

I can create one scenario where the crash no longer occurs after removing the Emoji keyboard from the Settings → Keyboards menu using the following steps.

  • Open the Settings app.
  • Go to General> Keyboard, then click Keyboards at the top. (There will be a number next to it - the number of keyboards you've installed.)
  • Click Edit, then click the red circle next to Emoji.
  • Click Remove.

This solution is not acceptable, we cannot ask our customers to follow these steps, it is better to have a solution for the failure.

Emoji keyboard in keyboards

After removing Emoji Keyboard

Before and after removing Emoji Keyboard:

+3


source to share


2 answers


In my case, it was due to the wrong property AppleLanguages

; it was fixed for NSObject

, but not for NSArray

.

Wrong:

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

      



Should be:

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

      

+2


source


Found a solution to this problem. This is perhaps very specific to our project history. Somehow, our project has a situation where Base.lproj has en.lproj and es.lproj, while the "Use basic internationalization" option is disabled, and hance caused a runtime crash. When we cleaned up the project, the accident was gone.



enter image description here

0


source







All Articles