My app has suddenly started crashing when keyboard type is numberPad or phonePad. The crash happen in simulator and device both. I am setting keyboard type by below code.
self.textFieldMobileNumber.keyboardType = .numberPad
Default keyboard just works fine. The crash log is blow
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSSetM addObject:]: object cannot be nil'
*** First throw call stack:
(
0 CoreFoundation 0x0000000112d0f6fb __exceptionPreprocess + 331
1 libobjc.A.dylib 0x0000000112051ac5 objc_exception_throw + 48
2 CoreFoundation 0x0000000112c5dddc _CFThrowFormattedException + 194
3 CoreFoundation 0x0000000112c81601 -[__NSSetM addObject:] + 817
4 UIKitCore 0x000000011ca49f8f +[UIKeyboardImpl uniqueNumberPadInputModesFromInputModes:forKeyboardType:] + 1257
5 UIKitCore 0x000000011ca4998f -[UIKeyboardImpl desirableInputModesWithExtensions:] + 1446
6 UIKitCore 0x000000011ca4a0cf -[UIKeyboardImpl recomputeActiveInputModesWithExtensions:] + 54
7 UIKitCore 0x000000011ca3b158 -[UIKeyboardImpl setDelegate:force:] + 3343
8 UIKitCore 0x000000011ca8db1e -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:] + 1506
9 UIKitCore 0x000000011cc4d417 -[UIResponder(UIResponderInputViewAdditions) reloadInputViews] + 81
10 UIKitCore 0x000000011cc4916a -[UIResponder becomeFirstResponder] + 865
11 UIKitCore 0x000000011d0d4fb8 -[UIView(Hierarchy) becomeFirstResponder] + 145
12 UIKitCore 0x000000011cf269ec -[UITextField becomeFirstResponder] + 237
13 UIKitCore 0x000000011cee67a5 -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) setFirstResponderIfNecessary] + 208
14 UIKitCore 0x000000011ced3853 -[UITextSelectionInteraction oneFingerTap:] + 3851
15 UIKitCore 0x000000011c80714d -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 57
16 UIKitCore 0x000000011c80fc69 _UIGestureRecognizerSendTargetActions + 109
17 UIKitCore 0x000000011c80d5ba _UIGestureRecognizerSendActions + 311
18 UIKitCore 0x000000011c80c897 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 966
19 UIKitCore 0x000000011c7fec4e _UIGestureEnvironmentUpdate + 2820
20 UIKitCore 0x000000011c7fe108 -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 478
21 UIKitCore 0x000000011c7fde96 -[UIGestureEnvironment _updateForEvent:window:] + 200
22 UIKitCore 0x000000011cc595bc -[UIWindow sendEvent:] + 4057
23 UIKitCore 0x000000011cc37d16 -[UIApplication sendEvent:] + 356
24 UIKitCore 0x000000011cd08293 __dispatchPreprocessedEventFromEventQueue + 3232
25 UIKitCore 0x000000011cd0abb9 __handleEventQueueInternal + 5911
26 CoreFoundation 0x0000000112c76be1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
27 CoreFoundation 0x0000000112c76463 __CFRunLoopDoSources0 + 243
28 CoreFoundation 0x0000000112c70b1f __CFRunLoopRun + 1231
29 CoreFoundation 0x0000000112c70302 CFRunLoopRunSpecific + 626
30 GraphicsServices 0x00000001171ab2fe GSEventRunModal + 65
31 UIKitCore 0x000000011cc1dba2 UIApplicationMain + 140
32 IMRide 0x000000010b39beb8 main + 72
33 libdyld.dylib 0x000000011560a541 start + 1
34 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
I have searched all over the internet and tried many solution from my side but the issue did not fix.
Edit
When I set default keyboard. It shows (null) for number keyboard, switching to that does not crash but when set .numberPad keyboard it starts crashing.
Check the image below for the reference
Finally I found the issue. I had overridden a method of NumberFormatter
which caused the crash while showing numberPad keyboard.
Below is the method that I override which should not have been done, or done in some other way.
extension NumberFormatter {
open override func string(for obj: Any?) -> String? {
if condition {
return <some value based on condition>
}
return nil
}
}
Returning nil caused the crash. Also if you return something else rather then the obj
it will print the same in keyboard keys.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.