IPhone 6s - iOS 9.1 crashes on [Preview UICollectionViewControllerContext: viewControllerForLocation:]

This is a pretty complicated stack trace because it looks around , the only thing I can think of is that the iPhone 6s user is trying to 3D-touch something, and my gesture recognizer (somewhere, I don’t know which one, because that he doesn’t tell me which line or even which controller) doesn’t know how to handle this? I did not add any gesture recognizers in 3D-touch, and I do not implement interactions with 3D-touch applications.

I configured iOS 8 in this build, and I don’t have an iPhone 6s to test, unfortunately, so it cannot play it.

Thoughts on what might cause this, how to narrow it down, where / what and how to reproduce, and how to handle the exception?

Thread : Fatal Exception: NSInvalidArgumentException 0 CoreFoundation 0x18586cf48 __exceptionPreprocess 1 libobjc.A.dylib 0x19ad17f80 objc_exception_throw 2 CoreFoundation 0x185873b54 __CFExceptionProem 3 UIKit 0x18b63438c -[UICollectionViewController previewingContext:viewControllerForLocation:] 4 UIKit 0x18b187d7c -[_UIViewControllerPreviewSourceViewRecord previewInteractionController:viewControllerForPreviewingAtPosition:inView:presentingViewController:] 5 UIKit 0x18b43cd4c -[UIPreviewInteractionController startInteractivePreviewAtLocation:inView:] 6 UIKit 0x18b43d848 -[UIPreviewInteractionController startInteractivePreviewWithGestureRecognizer:] 7 UIKit 0x18b43e8c0 -[UIPreviewInteractionController _handleRevealGesture:] 8 UIKit 0x18b37b330 _UIGestureRecognizerSendTargetActions 9 UIKit 0x18afa4b5c _UIGestureRecognizerSendActions 10 UIKit 0x18ae3285c -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] 11 UIKit 0x18b37c70c ___UIGestureRecognizerUpdate_block_invoke898 12 UIKit 0x18adf18b8 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks 13 UIKit 0x18adee63c _UIGestureRecognizerUpdate 14 UIKit 0x18ae306cc -[UIWindow _sendGesturesForEvent:] 15 UIKit 0x18ae2fcc8 -[UIWindow sendEvent:] 16 UIKit 0x18ae004a4 -[UIApplication sendEvent:] 17 UIKit 0x18adfe76c _UIApplicationHandleEventQueue 18 CoreFoundation 0x185824544 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 19 CoreFoundation 0x185823fd8 __CFRunLoopDoSources0 20 CoreFoundation 0x185821cd8 __CFRunLoopRun 21 CoreFoundation 0x185750ca0 CFRunLoopRunSpecific 22 GraphicsServices 0x190cd4088 GSEventRunModal 23 UIKit 0x18ae68ffc UIApplicationMain 24 XXXXXXXXXX 0x10013739c main (main.m:16) 25 libdyld.dylib 0x19b55a8b8 start 
+6
source share
3 answers

Are you UIImagePickerController anywhere in your application? There is a known problem with it and 3D Touch: UIImagePickerController, crashing when clicking on click?

Touching a photo in UIImagePickerController seems like a bad application. I think we will have to wait until Apple fixes this.

+5
source

PUPhotoGridViewController (used in UIImagePickerController) is a simple UICollectionViewController, and you can write an extension for a method not implemented.

 extension UICollectionViewController: UIViewControllerPreviewingDelegate { public func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { return nil; } public func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) { } } 
+6
source

Thanks for @ Antigp'answer !

Here is the version of OC:

Headline

 @interface UICollectionViewController (FixCrash) <UIViewControllerPreviewingDelegate> - (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location; - (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit; @end 

Implementation

 @implementation UICollectionViewController (FixCrash) - (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location { return nil; } - (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit { return; } @end 
+3
source

All Articles