iOS 13 memperkenalkan desain baru modalPresentationStyle
.pageSheet
(dan saudara kandungnya .formSheet
) untuk pengontrol tampilan yang disajikan secara sederhana…
… Dan kita dapat mengabaikan lembaran ini dengan menggeser pengontrol tampilan yang disajikan ke bawah (penghentian interaktif) . Meskipun fitur baru "tarik-untuk-tutup" cukup berguna, fitur ini mungkin tidak selalu diinginkan.
PERTANYAAN: Bagaimana kita bisa mematikan penghentian interaktif? - Ingatlah bahwa kami menjaga gaya presentasi tetap sama.
ios
uiviewcontroller
uikit
modalviewcontroller
ios13
Jakub Truhlář
sumber
sumber
Jawaban:
Pilihan 1:
(
.pageSheet
Tindakan penutupan interaktif yang dinonaktifkan seperti ini.)UIViewController
berisi properti baru yang disebutisModalInPresentation
yang harus diaturtrue
untuk mencegah penutupan interaktif..popover
dll.false
secara default.Pilihan 2:
UIAdaptivePresentationControllerDelegate
berisi metode baru yang disebutpresentationControllerShouldDismiss
.isModalInPresentation
propertinya disetel kefalse
.sumber
isModalInPresentation
pada pengontrol navigasi atau pada pengontrol tampilan individual yang ditunjukkan di tumpukan navigasi. Yang terakhir memungkinkan Anda untuk memilih pada layar demi layar apakah pemecatan interaktif dimungkinkan. Hati-hati dengan pengontrol pencarian, mereka lebih diutamakan daripada pengontrol tampilan individu (tetapi bukan pengontrol navigasi). Info lebih lanjut di posting blog saya: medium.com/@hacknicity/…viewController.modalInPresentation = YES;
UIImagePickerController
? Bagi kami tampaknyaUIImagePickerController
mengabaikannya sehingga dapat ditutup dengan gerakan menggesek. Mungkin itu adalah bug iOS 13.presentationControllerShouldDismiss(_ presentationController: UIPresentationController)
mengembalikan false,presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController)
dipanggil sehingga Anda dapat melakukan hal-hal seperti menambahkan dialog konfirmasi jika pengguna telah memasukkan data.Jika Anda menginginkan perilaku yang sama seperti di versi iOS sebelumnya (<iOS13) seperti presentasi model dalam layar penuh, cukup setel gaya presentasi pengontrol tampilan tujuan Anda ke
UIModalPresentationStyle.fullScreen
Dan jika Anda menggunakan storyboard, cukup pilih segua dan pilih
Full Screen
bentukPresentation
dropdown.Jika Anda hanya ingin menonaktifkan penghentian interaktif dan mempertahankan
UIViewController
properti set gaya presentasi baruisModalInPresentation
ketrue
.sumber
Properti
isModalInPresentation
mungkin membantu.Dari dokumentasi:
Anda bisa menggunakannya seperti ini:
sumber
Jika Anda menggunakan storyboard untuk menata UI Anda, saya telah menemukan cara terbaik untuk menonaktifkan penghentian interaktif ini saat menggunakan pengontrol navigasi adalah dengan mengubah presentasi Pengontrol Navigasi di inspektur atribut dari Otomatis ke Layar Penuh. Semua pengontrol tampilan di tumpukan navigasi Anda kemudian akan menjadi layar penuh dan tidak akan dapat ditutup oleh pengguna.
Atribut Inspektur menampilkan opsi presentasi untuk pengontrol navigasi
sumber
Apple membagikan kode sampel tentangnya di tautan ini
Ini menggunakan
isModalInPresentation
sebanyak mungkin saran pengguna.sumber