iOS 13 stellt ein neues Design von modalPresentationStyle
.pageSheet
(und seinen Geschwistern .formSheet
) für modal präsentierte View Controller vor…
… Und wir können diese Blätter schließen, indem wir den dargestellten Ansichts-Controller nach unten schieben (interaktive Entlassung) . Obwohl die neue Funktion "Pull-to-Discharge" ziemlich nützlich ist, ist sie möglicherweise nicht immer wünschenswert.
DIE FRAGE: Wie können wir die interaktive Entlassung ausschalten? - Denken Sie daran, dass wir den Präsentationsstil beibehalten.
ios
uiviewcontroller
uikit
modalviewcontroller
ios13
Jakub Truhlář
quelle
quelle
Antworten:
Option 1:
(Deaktivierte interaktive
.pageSheet
Entlassung verhält sich so.)UIViewController
enthält eine neue Eigenschaft namens,isModalInPresentation
die festgelegt werden musstrue
, um die interaktive Entlassung zu verhindern..popover
usw.false
standardmäßig.Option 2:
UIAdaptivePresentationControllerDelegate
enthält eine neue Methode namenspresentationControllerShouldDismiss
.isModalInPresentation
Eigenschaft auf gesetzt istfalse
.quelle
isModalInPresentation
auf dem Navigationscontroller oder auf den einzelnen im Navigationsstapel angezeigten Ansichtscontrollern einstellen . Mit letzterem können Sie Bildschirm für Bildschirm auswählen, ob die interaktive Entlassung möglich ist. Bei Suchsteuerungen haben sie Vorrang vor den einzelnen Ansichtssteuerungen (jedoch nicht vor der Navigationssteuerung). Weitere Informationen in meinem Blog-Beitrag: medium.com/@hacknicity/…viewController.modalInPresentation = YES;
UIImagePickerController
? Für uns sieht es so aus, als würde derUIImagePickerController
es ignorieren und so kann es mit der Wischgeste verworfen werden. Vielleicht ist es ein iOS 13-Fehler.presentationControllerShouldDismiss(_ presentationController: UIPresentationController)
false zurückgegeben wird,presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController)
wird aufgerufen, damit Sie beispielsweise einen Bestätigungsdialog hinzufügen können, wenn der Benutzer Daten eingegeben hat.Wenn Sie dasselbe Verhalten wie in der vorherigen iOS-Version (<iOS13) wie bei der Modellpräsentation im Vollbildmodus wünschen, stellen Sie einfach den Präsentationsstil Ihres Zielansichts-Controllers auf ein
UIModalPresentationStyle.fullScreen
Und wenn Sie ein Storyboard verwenden, wählen Sie einfach das Segua und dann
Full Screen
dasPresentation
Dropdown-Formular aus.Wenn Sie nur die interaktive Entlassung deaktivieren und die
UIViewController
EigenschaftisModalInPresentation
für den neuen Präsentationsstil beibehalten möchtentrue
.quelle
Die Eigenschaft
isModalInPresentation
könnte helfen.Aus der Dokumentation:
Sie können es so verwenden:
quelle
Wenn Sie Storyboards zum Layout Ihrer Benutzeroberfläche verwenden, habe ich festgestellt, dass die interaktive Entlassung bei Verwendung eines Navigationscontrollers am besten deaktiviert werden kann, indem die Darstellung des Navigationscontrollers im Attributinspektor von Automatisch auf Vollbild geändert wird. Alle View Controller in Ihrem Navigationsstapel werden dann im Vollbildmodus angezeigt und können vom Benutzer nicht geschlossen werden.
Attributinspektor mit Präsentationsoption für den Navigationscontroller
quelle
Apple hat unter diesem Link einen Beispielcode dazu freigegeben
Es werden
isModalInPresentation
möglichst viele Benutzer vorgeschlagen.quelle