Ошибка UIAlertController и UIViewAlertForUnsatisfiableConstraints

Вчера я обновился до Xcode 10.2 и начал использовать Swift 5 и заметил эту ошибку при появлении моей подсказки с фотографией UIAlertController. Я не помню, чтобы видел это в Xcode 10.1.

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x600001321e00 UIView:0x7fe1246070a0.width == - 16   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.

Я прочитал этот вопрос Как перехватывать UIViewAlertForUnsatisfiableConstraints? и смог указать на ошибку. к моему UIAlertController (выделено красным)

введите описание изображения здесь

Вот мой код:


 @objc private func promptPhoto() {

    let prompt = UIAlertController(title: "Choose a Photo",
                                   message: "",
                                   preferredStyle: .actionSheet)

    let imagePicker = UIImagePickerController()
    imagePicker.delegate = self

    let camerAction = UIAlertAction(title: "Camera", style: .default) { _ in
      guard self.isCameraAccessible() else {
        self.showAlert(title: "Oops", message: "Camera is not available")
        return
      }
      imagePicker.sourceType = .camera
      imagePicker.allowsEditing = true
      self.present(imagePicker, animated: true)
    }

    let libraryAction = UIAlertAction(title: "Photo Library", style: .default) { _ in
      imagePicker.sourceType = .photoLibrary
      imagePicker.allowsEditing = true
      self.present(imagePicker, animated: true)
    }

    let cancelAction = UIAlertAction(title: "Cancel",
                                     style: .cancel,
                                     handler: nil)

    prompt.addAction(camerAction)
    prompt.addAction(libraryAction)
    prompt.addAction(cancelAction)

    present(prompt, animated: true) {
      // Prevent closing the prompt by touch up outside the prompt.
      prompt.view.superview?.subviews[0].isUserInteractionEnabled = false
    }

  }

Я пытался поиграть с настройкой ширины моего UIAlertController, используя этот код внутри моего метода promptPhoto(), но безрезультатно.

let width: NSLayoutConstraint = NSLayoutConstraint(item: prompt.view!,
                                                   attribute: NSLayoutConstraint.Attribute.width,
                                                   relatedBy: NSLayoutConstraint.Relation.equal,
                                                   toItem: nil,
                                                   attribute: NSLayoutConstraint.Attribute.notAnAttribute,
                                                   multiplier: 1,
                                                   constant: self.view.frame.width) 

prompt.view.addConstraint(width)

Есть ли способ контролировать ширину UIAlertController, чтобы я мог избавиться от своего сообщения об ошибке?

Заранее спасибо.


person bvh    schedule 28.03.2019    source источник
comment
В вашем Build Setting -> Swift Compiler - Language используется Swift 5 или Swift 4.2 ?   -  person Nizzam    schedule 28.03.2019
comment
@Nizzam Языковая версия Swift установлена ​​​​на Swift 5.   -  person bvh    schedule 28.03.2019
comment
Я бы сказал, не беспокойтесь об этом, это похоже на внутреннее несоответствие макета в UIAlertController.   -  person Tamás Sengel    schedule 28.03.2019
comment
Похоже, это ошибка: openradar.appspot.com/49289931   -  person lenooh    schedule 25.05.2019
comment
Неужели до сих пор нет решения для этого? Постоянно ошибка печати   -  person erotsppa    schedule 06.03.2020
comment
Кто-нибудь нашел решение указанной проблемы?   -  person Nidhi Tiwari    schedule 26.05.2020


Ответы (1)


Это может быть ошибка Xcode. Тем не менее Apple не исправила это. Эта ошибка также произошла в последней версии xcode 11.3.1.

person Dilan    schedule 12.03.2020
comment
Xcode 12.2 - то же самое - person m8labs; 19.12.2020