Tocropviewcontroller: Отклонение проблем с переходом (iOS 13)

Созданный на 8 авг. 2019  ·  23Комментарии  ·  Источник: TimOliver/TOCropViewController

У меня возникла проблема при представлении контроллера урожая над контроллером навигации.

При закрытии контроллера кадрирования в конце перехода представление контроллера навигации удаляется и не отображается ... (происходит в iPhone и iPad и только в iOS 13).

не говоря уже о том, что навигация все еще существует, а пользовательский интерфейс «завис».

Самый полезный комментарий

 func cropViewController(_ cropViewController: CropViewController, didFinishCancelled cancelled: Bool) {
        //This code fails on iOS13.
        //cropViewController.dismiss(animated: true)

        let viewController = cropViewController.children.first!
        viewController.modalTransitionStyle = .coverVertical
        viewController.presentingViewController?.dismiss(animated: true, completion: nil)
    }

Этот метод хорошо работает на iOS 13.
Не знаю почему.

Я надеюсь, ты найдешь лучший способ.

https://www.dropbox.com/s/wyzc8errinfap1f/TestCrop.zip?dl=0

Все 23 Комментарий

@uchiaTziki Эм. Возможно, вам придется показать мне, извините! Можно скриншот приложить?

прикрепленные скриншоты ...

  1. представление модального окна с подборщиком изображений.
  2. выбранное изображение
  3. присутствует контроллер урожая из этой ячейки
  4. после отмены отклонение приводит к исчезновению средства выбора изображений (и вы видите исходный представляющий контроллер - я покрасил его в белый цвет)

Надеюсь, это проясняет ситуацию ...
1
2
3
4

Хм, так вы представляете его внутри другого представленного контроллера представления?

Интересно, заканчивал ли этот код отклонения неправильный контроллер представления, тогда:

https://github.com/TimOliver/TOCropViewController/blob/8770be8407540f5873fe714870771cea8a382ac7/Objective-C/TOCropViewController/TOCropViewController.m#L895

Не могли бы вы попробовать изменить код и посмотреть, сможете ли вы найти комбинацию, которая его исправляет?

Не имея возможности проверить это сам, я ничего не могу сделать со своей стороны. Извините!

Я пробовал почти все, но попробую еще раз ..
Контроллер сзади не отключается .. его вид удаляется (что странно).

Пробовали ли вы использовать этот код перед тем, как представить cropViewController?

if #available(iOS 13.0, *) {
 cropViewController.modalPresentationStyle = .fullScreen
}

Пробовал сегодня утром. Это решает ошибку, но анимация является модальной анимацией по умолчанию (снизу вверх).
Специальная анимация из вида / кадра не работает с этим решением

@uchiaTziki ты нашел какое-нибудь исправление?

Воспроизводится ли это вообще в примере приложения? Если так, то я потенциально могу взглянуть на это.

Способ работы модальных презентаций в iOS 13 изменился по сравнению с предыдущими версиями iOS. Но у меня еще не было возможности точно определить, что нам нужно сделать, чтобы обновить код для этого.

Насколько я понимаю, он не работает должным образом, если у вас есть следующее:

  • Контроллер навигации (A) подталкивает контроллер просмотра (B)
  • Контроллер представления (B) представляет контроллер (C) как лист формы
  • View Controller (C) представляет CropViewController
  • Нажмите « Отменить» или « Готово» в CropViewController, и вы заметите ошибку.

Извини, что был в отпуске.

Пробовали ли вы использовать этот код перед тем, как представить cropViewController?

if #available(iOS 13.0, *) {
 cropViewController.modalPresentationStyle = .fullScreen
}

Использование этого ( @TimOliver ) в последней бета-версии Xcode

Это сработало и для меня.

 func cropViewController(_ cropViewController: CropViewController, didFinishCancelled cancelled: Bool) {
        //This code fails on iOS13.
        //cropViewController.dismiss(animated: true)

        let viewController = cropViewController.children.first!
        viewController.modalTransitionStyle = .coverVertical
        viewController.presentingViewController?.dismiss(animated: true, completion: nil)
    }

Этот метод хорошо работает на iOS 13.
Не знаю почему.

Я надеюсь, ты найдешь лучший способ.

https://www.dropbox.com/s/wyzc8errinfap1f/TestCrop.zip?dl=0

Привет, я встретил ошибку на iOS 13.1

если я использую
dismiss(animated: true, completion: nil)
на iOS 13.1,

Все ViewController исчезнут.

crop

Не знаю почему.

Мне просто нужно было установить cropViewController.modalTransitionStyle = .coverVertical в качестве обходного пути, поскольку он больше не использует настраиваемый переход ...

Здесь то же самое, что и @oblq .

Пробовали ли вы использовать этот код перед тем, как представить cropViewController?

if #available(iOS 13.0, *) {
 cropViewController.modalPresentationStyle = .fullScreen
}

Исправлена ​​моя проблема, спасибо

if #available (iOS 13.0, *) {
CropViewController.modalPresentationStyle = .fullScreen
}

Спасибо. Это устранило мою проблему на iOS 13.

после кадрирования изображения, отклонение контроллера кадрирования, в конце перехода представление контроллера навигации удаляется и не отображается

пожалуйста, помогите мне

после кадрирования изображения, отклонение контроллера кадрирования, в конце перехода представление контроллера навигации удаляется и не отображается

пожалуйста, помогите мне

Привет! Просто установите cropViewController.dismiss(animated: **false**, completion: nil) вместо cropViewController.dismiss(animated: **true**, completion: nil)

Я тоже пытался решить эту проблему. Как говорит @ ibdman1991 , отключение анимации работает, но выглядит плохо. Я думаю, что удаление transitioningDelegate могло бы быть лучшим решением, хотя не уверен, насколько это будет эффективно.

    let cropViewController = CropViewController(image: image)
    cropViewController.modalTransitionStyle = .crossDissolve
    cropViewController.transitioningDelegate = nil

if #available (iOS 13.0, *) {
CropViewController.modalPresentationStyle = .fullScreen
}

Эта проблема решена в iOS 13 и выше. Спасибо.

if #available (iOS 13.0, *) {
CropViewController.modalPresentationStyle = .fullScreen
// cropViewController.modalTransitionStyle = .crossDissolve
cropViewController.transitioningDelegate = ноль
}
Работаю на меня

Ухх. Хорошо. Поскольку явная установка стиля презентации на полноэкранный режим показалась большинству людей исправленной, я закрываю это. :)

Если у вас есть конкретный вариант использования, который требует явно другого стиля модального представления, откройте новую проблему и очень внимательно объясните, что вы пытаетесь сделать. Имейте в виду, что если это ошибка в iOS 13, возможно, мы мало что сможем сделать здесь.

Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги