Обнаружение расширения UIImagePickerController завершилось ошибкой: (пусто) - PullRequest
3 голосов
/ 23 февраля 2020

Я пытаюсь реализовать ImagePicker на моем ViewController, но оказывается, что он представляет пустой контроллер ImagePicker и сообщение UIImagePickerController extension discovery failed with error: (null) на консоли.

Я понятия не имею, что я делаю неправильно, и я не нашел никакой информации по этому вопросу. Однако я заметил одну вещь: PickerView занимает слишком много времени для представления.

Код, связанный с ImagePicker, следующий:

private let imagePicker = UIImagePickerController()

private func setupImagePicker() {
        imagePicker.sourceType = .photoLibrary
        imagePicker.allowsEditing = false
        imagePicker.delegate = self
        imagePicker.mediaTypes = ["public.image"]
}

    @objc private func launchImagePicker() {

        let photos = PHPhotoLibrary.authorizationStatus()
        if photos == .notDetermined {
            PHPhotoLibrary.requestAuthorization({ [weak self] status in
                DispatchQueue.main.async {
                    if status == .authorized, let picker = self?.imagePicker {
                        self?.present(picker, animated: true, completion: nil)
                    } else {
                        self?.present(URealtorUtils.getAlert(message: "You have to authorize photo library access in order to upload a photo"), animated: true, completion: nil)
                    }
                }
            })
        } else if photos == .authorized {
            present(imagePicker, animated: true, completion: nil)
        }
    }

extension MyController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    func imagePickerController(_ picker: UIImagePickerController,
                               didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            self.viewModel.setPropertyImage(image)
        }
        dismiss(animated: true, completion: nil)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        dismiss(animated: true, completion: nil)
    }
}

Это скриншот из того, что я получаю, когда представлен PickerView:

1 Ответ

2 голосов
/ 25 февраля 2020

Я проверил детали, и в вашей реализации нет проблем. Я также проверил официальный образец яблока здесь. https://developer.apple.com/documentation/uikit/uiimagepickercontroller/customizing_an_image_picker_controller Тот же результат!

Наконец, эта проблема связана с iOS Симуляторами (версия 11.3.1). К вашему сведению, iPhone 11 Pro Max не работал в некоторых предыдущих версиях, но iPhone 8 и некоторые другие работали. Я просто хочу, чтобы вы, ребята, не тратили время на это. Двигайся вперед.

Спасибо.

...