UIImagePickerController врезается в силу касания?

С iOS 9 все мои UIImagePickerControllers теперь сбой, если я нажимаю на представленные изображения. Сообщение об ошибке:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSObject previewingContext:viewControllerForLocation:]: unrecognized selector sent to class 0x1a0752020'

Я предполагаю, что это ошибка Apple, но с кем-нибудь работает?

Ответ 1

Вот обходное решение: https://gist.github.com/nolanw/bd0a8997632fe92a9f83 (предупреждение: swizzles метод в частном классе, что, вероятно, должно сделать вас тошнотворным). Вставьте эти файлы в свой проект, затем вызовите MSDPreventImagePickerCrashOn3DTouch откуда-нибудь (например, -applicationDidFinishLaunching:…).

Проблема заключается в том, что частный класс с именем PUPhotosGridViewController вызывает метод UIViewControllerPreviewing на своем суперклассе, который не реализует этот метод. Обходной путь проверяет метод оскорбления и пытается вызвать исходную реализацию, но он проглатывает исключение, поэтому мы не сбой. Надеюсь, что, сделав это так, если/когда он будет исправлен, обходное решение не повлияет на это исправление.

Ответ 2

Ответ - непонятный способ исправить issuse. И вы можете получить отказ от Apple, используя Private API.

PUPhotoGridViewController - это простой UICollectionViewController, и вы можете написать расширение для не реализованного метода.

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

    public func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {

    }
}