Search code examples
xamarin.iosuicollectionviewscreen-rotationios9.3

Xamarin.iOS UICollectionView App crash when device is rotated for iOS 9.3


In my app I am using UICollectionView to show grid view for custom cell containing Image and text. To support all screen sizes I have overridden IUICollectionViewDelegateFlowLayout delegate's GetSizeForItem method. Every thing works great from iOS 8.1 to 9.2(Tested on simulator and device). For iOS 9.3 simulator grid view renders correctly. But as soon as I rotate screen it crashes with following error:

Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[NSNull length]: unrecognized selector sent to instance 0x9065398 Native stack trace: 0 CoreFoundation
0x08e38494 exceptionPreprocess + 180 1 libobjc.A.dylib
0x091abe02 objc_exception_throw + 50 2 CoreFoundation
0x08e42253 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 3
CoreFoundation 0x08d7789d ___forwarding_
+ 1037 4 CoreFoundation 0x08d7746e _CF_forwarding_prep_0 + 14 5 CoreFoundation 0x08cf0cdb CFStringCompareWithOptionsAndLocale + 203 6 Foundation
0x00da5770 -[NSString compare:options:range:locale:] + 175 7
Foundation 0x00da56b9 -[NSString compare:options:range:] + 72 8 Foundation
0x00dab7f2 -[NSString caseInsensitiveCompare:] + 81 9 UIKit
0x0156e021 -[UIPhysicalKeyboardEvent _matchesKeyCommand:] + 357 10 UIKit 0x0147035e -[UIResponder _keyCommandForEvent:target:] + 446 11 UIKit 0x01470531 -[UIResponder _keyCommandForEvent:target:] + 913 12 UIKit 0x0147019b -[UIResponder _keyCommandForEvent:] + 48 13 UIKit
0x0123e287 -[UIApplication handleKeyHIDEvent:] + 380 14 UIKit
0x0121234d _UIApplicationHandleEventQueue + 6743 15 CoreFoundation
0x08d4ae5f CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 15 16 CoreFoundation 0x08d40aeb __CFRunLoopDoSources0 + 523 17 CoreFoundation 0x08d3ff08 __CFRunLoopRun + 1032 18 CoreFoundation
0x08d3f846 CFRunLoopRunSpecific + 470 19 CoreFoundation
0x08d3f65b CFRunLoopRunInMode + 123 20 GraphicsServices
0x09b3f664 GSEventRunModal + 192 21 GraphicsServices
0x09b3f4a1 GSEventRun + 104 22 UIKit
0x01218eb9 UIApplicationMain + 160 23 ???
0x18c98020 0x0 + 415858720 24 ???
0x18c97e18 0x0 + 415858200 25 ???
0x18c95f98 0x0 + 415850392 26 ???
0x18c95cd4 0x0 + 415849684 27 ???
0x18c95e60 0x0 + 415850080 28 libmonosgen-2.0.dylib
0x088cee81 mono_jit_runtime_invoke + 705 29 libmonosgen-2.0.dylib
0x08a7e0af mono_runtime_invoke + 127 30 libmonosgen-2.0.dylib
0x08a82f71 mono_runtime_exec_main + 401 31 libmonosgen-2.0.dylib
0x08a82d35 mono_runtime_run_main + 629 32 libmonosgen-2.0.dylib
0x0893ac8d mono_jit_exec + 93 33 TutorMeNot.iOS
0x001ff440 xamarin_main + 2384 34 TutorMeNot.iOS
0x001da5a1 main + 113 35 libdyld.dylib
0x0a62ca25 start + 1 36 ???
0x00000003 0x0 + 3


Solution

  • The issue is not more related to the code. Here are my observations which resolved my issue.

    I am using TabBarController. In one of the tab I am using UICollectionView with custom cell. When I run App on iOS 9.3 simulator it displayed my collection view correctly.

    To rotate simulator Keyboard shortcut "Command+arrow" is used. As soon as I pressed command it's getting crashed. But when I rotate simulator using Hardware -> Rotate options menu it worked fine.

    Also I tested this on iPod device(iOS V9.3.2) and worked perfectly. For test purpose I created sample UICollectionView App using Objective-C. When I build and run that sample on iOS 9.3 simulator it worked fine with no any crash on screen rotation.

    Hope Xamarin team will look for this problem.