Tocropviewcontroller: Verwerfen von Übergangsproblemen (iOS 13)

Erstellt am 8. Aug. 2019  ·  23Kommentare  ·  Quelle: TimOliver/TOCropViewController

Ich habe ein Problem beim Präsentieren des Crop-Controllers über einen Navigations-Controller festgestellt.

Beim Schließen des Crop-Controllers wird am Ende des Übergangs die Navigations-Controller-Ansicht entfernt und nicht angezeigt ... (passiert bei iPhone und iPad und nur bei iOS 13).

Ganz zu schweigen davon, dass die Navigation immer noch da ist und die Benutzeroberfläche "hängt".

bug

Hilfreichster Kommentar

 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)
    }

Diese Methode funktioniert gut unter iOS 13.
Ich weiß nicht warum.

Ich erwarte, dass Sie einen besseren Weg finden.

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

Alle 23 Kommentare

@uchiaTziki Äh . Du musst es mir vielleicht zeigen, sorry! Kannst du einen Screenshot anhängen?

angehängte Screenshots...

  1. Modal mit Bildauswahl präsentieren.
  2. ausgewähltes Bild
  3. Präsentieren Sie die Pflanzenkontrolle aus dieser Zelle
  4. Nach dem Abbrechen führt das Verwerfen dazu, dass die Bildauswahl verschwindet (und Sie sehen den anfänglich präsentierten Controller - ich habe den Controller weiß gefärbt).

Hoffe das macht die Sache klarer..
1
2
3
4

Hmm, also präsentieren Sie es in einem anderen Ansichtscontroller, der präsentiert wird?

Ich frage mich, ob dieser Schließungscode dann den falschen Ansichtscontroller schließt:

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

Können Sie bitte versuchen, den Code dort zu ändern und zu sehen, ob Sie eine Kombination finden, die das Problem behebt?

Ohne es selbst testen zu können, kann ich von meiner Seite aus nichts tun. Es tut uns leid!

Ich habe fast alles versucht, aber ich werde es noch einmal versuchen..
Der Controller auf der Rückseite wird nicht entlassen. Seine Ansicht wird entfernt (was seltsam ist).

Haben Sie diesen Code ausprobiert, bevor Sie cropViewController präsentiert haben?

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

Habe es heute morgen probiert. Es behebt den Fehler, aber die Animation ist die standardmäßige modale Animation (von unten nach oben).
Die spezielle Animation aus Ansicht/Frame funktioniert bei dieser Lösung nicht

@uchiaTziki hast du eine Lösung gefunden?

Ist das in der Beispiel-App überhaupt reproduzierbar? Wenn ja, kann ich mir das eventuell mal anschauen.

Die Funktionsweise von modalen Präsentationen in iOS 13 hat sich gegenüber früheren Versionen von iOS geändert. Aber ich hatte noch keine gute Gelegenheit herauszufinden, was wir tun müssen, um den Code dafür zu aktualisieren.

Soweit ich sehen kann, funktioniert es nicht richtig, wenn Sie Folgendes haben:

  • Navigationscontroller (A) drückt einen Ansichtscontroller (B)
  • View Controller (B) präsentiert View Controller (C) als Formularblatt
  • View Controller (C) präsentiert CropViewController
  • Tippen Sie auf Abbrechen oder Fertig auf CropViewController und Sie können den Fehler erkennen.

Entschuldigung, ich war im Urlaub.

Haben Sie diesen Code ausprobiert, bevor Sie cropViewController präsentiert haben?

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

Dies (

Das hat bei mir auch funktioniert.

 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)
    }

Diese Methode funktioniert gut unter iOS 13.
Ich weiß nicht warum.

Ich erwarte, dass Sie einen besseren Weg finden.

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

Hallo, ich treffe den Fehler auf iOS 13.1

wenn ich benutze
dismiss(animated: true, completion: nil)
unter iOS 13.1,

Alle ViewController verschwinden.

crop

Ich weiß nicht warum.

Ich musste nur als Workaround cropViewController.modalTransitionStyle = .coverVertical einstellen, da es dann den benutzerdefinierten Übergang nicht mehr verwendet ...

Das gleiche wie @oblq hier.

Haben Sie diesen Code ausprobiert, bevor Sie cropViewController präsentiert haben?

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

Mein Problem behoben, danke

wenn #verfügbar(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}

Vielen Dank. Dies hat mein Problem unter iOS 13 behoben

Nach dem Zuschneiden des Bildes, Schließen des Zuschneide-Controllers, am Ende des Übergangs wird die Navigations-Controller-Ansicht entfernt und nicht angezeigt

bitte hilf mir

Nach dem Zuschneiden des Bildes, Schließen des Zuschneide-Controllers, am Ende des Übergangs wird die Navigations-Controller-Ansicht entfernt und nicht angezeigt

bitte hilf mir

Hi! Legen Sie einfach cropViewController.dismiss(animated: **false**, completion: nil) anstelle von cropViewController.dismiss(animated: **true**, completion: nil)

Ich habe auch versucht, dieses Problem zu lösen. Wie @ibdman1991 sagt, funktioniert das Deaktivieren der Animation, aber es sieht einfach schlecht aus. Ich denke, das Entfernen von transitioningDelegate könnte eine schönere Lösung sein, bin mir jedoch nicht sicher, wie wirksam dies wäre.

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

wenn #verfügbar(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}

Dieses Problem wurde in iOS 13 und höher behoben Danke

wenn #verfügbar(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
// cropViewController.modalTransitionStyle = .crossDissolve
cropViewController.transitioningDelegate = nil
}
Für mich arbeiten

Äh. Okay. Da das explizite Festlegen des Präsentationsstils auf Vollbild für die meisten Leute das Problem zu beheben schien, schließe ich dies ab. :)

Wenn Sie einen bestimmten Anwendungsfall haben, der einen explizit anderen modalen Präsentationsstil erfordert, öffnen Sie bitte eine neue Ausgabe und erklären Sie sehr sorgfältig, was Sie tun möchten. Bitte denken Sie daran, wenn es sich um einen Fehler in iOS 13 handelt, können wir hier möglicherweise nicht viel tun.

Vielen Dank!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen