J'ai rencontré un problème lors de la présentation du contrôleur de recadrage sur un contrôleur de navigation.
Lors de la fermeture du contrôleur de recadrage, à la fin de la transition, la vue du contrôleur de navigation est supprimée et n'est pas affichée... (se produit sur iPhone et iPad et uniquement sur iOS 13).
sans oublier que la navigation est toujours là et que l'interface utilisateur est "bloquée".
@uchiaTziki Euh. Vous devrez peut-être me montrer, désolé! Pouvez-vous joindre une capture d'écran ?
captures d'écran jointes...
J'espère que ça clarifie les choses..
Hmm, donc vous le présentez dans un autre contrôleur de vue présenté ?
Je me demande si ce code de rejet finit par rejeter le mauvais contrôleur de vue alors :
Pouvez-vous s'il vous plaît essayer de changer le code et voir si vous pouvez trouver une combinaison qui le résout ?
Sans pouvoir le tester moi-même, je ne peux rien faire de mon côté. Désolé!
J'ai presque tout essayé, mais je vais réessayer..
Le contrôleur à l'arrière n'est pas rejeté.. sa vue est supprimée (ce qui est étrange).
Avez-vous essayé ces codes avant de présenter cropViewController ?
if #available(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}
Essayé ce matin. Cela résout le bug mais l'animation est l'animation modale par défaut (de bas en haut).
L'animation spéciale de la vue/du cadre ne fonctionne pas avec cette solution
@uchiaTziki avez-vous trouvé un correctif ?
Est-ce reproductible du tout dans l'exemple d'application ? Si c'est le cas, je peux éventuellement y jeter un œil.
Le fonctionnement des présentations modales dans iOS 13 a changé par rapport aux versions précédentes d'iOS. Mais je n'ai pas encore eu l'occasion de déterminer exactement ce que nous devons faire pour mettre à jour le code pour cela.
Autant que je sache, cela ne fonctionne pas correctement lorsque vous avez les éléments suivants :
Désolé j'étais en vacances.
Avez-vous essayé ces codes avant de présenter cropViewController ?
if #available(iOS 13.0, *) { cropViewController.modalPresentationStyle = .fullScreen }
L'utiliser ( @TimOliver ) dans la dernière version bêta de Xcode a fait l'affaire. Donc l'animation de transition fonctionne pour moi maintenant.
Cela a fonctionné pour moi aussi.
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)
}
Cette méthode fonctionne bien sur iOS 13.
Je ne sais pas pourquoi.
Je m'attends à ce que vous trouviez un meilleur moyen.
Salut, je rencontre le bug sur iOS 13.1
si j'utilise
dismiss(animated: true, completion: nil)
sur iOS 13.1,
Tous les ViewController disparaissent.
Je ne sais pas pourquoi.
J'ai juste dû définir cropViewController.modalTransitionStyle = .coverVertical
comme solution de contournement car il n'utilise alors plus la transition personnalisée ...
Même chose que @oblq ici.
Avez-vous essayé ces codes avant de présenter cropViewController ?
if #available(iOS 13.0, *) { cropViewController.modalPresentationStyle = .fullScreen }
J'ai résolu mon problème, merci
si #disponible(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}
Merci. Cela a résolu mon problème sur iOS 13
après le recadrage de l'image, en rejetant le contrôleur de recadrage, à la fin de la transition, la vue du contrôleur de navigation est supprimée et n'est pas affichée
Sil te plait aide moi
après le recadrage de l'image, en rejetant le contrôleur de recadrage, à la fin de la transition, la vue du contrôleur de navigation est supprimée et n'est pas affichée
Sil te plait aide moi
Salut! Réglez simplement cropViewController.dismiss(animated: **false**, completion: nil)
au lieu de cropViewController.dismiss(animated: **true**, completion: nil)
J'ai aussi essayé de résoudre ce problème. Comme le dit @ ibdman1991 , la désactivation de l'animation fonctionne mais cela a l'air mauvais. Je pense que supprimer le transitioningDelegate
pourrait être une solution plus agréable, mais je ne sais pas à quel point cela aurait un impact.
let cropViewController = CropViewController(image: image)
cropViewController.modalTransitionStyle = .crossDissolve
cropViewController.transitioningDelegate = nil
si #disponible(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}
Ce problème est résolu dans iOS 13 et supérieur Merci
si #disponible(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
// cropViewController.modalTransitionStyle = .crossDissolve
cropViewController.transitioningDelegate = nil
}
Travailler pour moi
Euh. D'accord. Étant donné que définir explicitement le style de présentation en plein écran semblait le résoudre pour la majorité des gens, je ferme ceci. :)
Si vous avez un cas d'utilisation spécifique qui nécessite un style de présentation modal explicitement différent, veuillez ouvrir un nouveau problème et expliquer très soigneusement ce que vous essayez de faire. N'oubliez pas que s'il s'agit d'un bogue dans iOS 13, nous ne pouvons peut-être pas faire grand-chose ici.
Merci!
Commentaire le plus utile
Cette méthode fonctionne bien sur iOS 13.
Je ne sais pas pourquoi.
Je m'attends à ce que vous trouviez un meilleur moyen.
https://www.dropbox.com/s/wyzc8errinfap1f/TestCrop.zip?dl=0