7

Bir kullanıcı, bir kullanıcı ABPeoplePickerNavigationController'da "İptal" düğmesine bastığında (bu, kaldırılabileceğine inanıyorsa), görünüm denetleyicisinin ya da kapanmıyor veya otomatik olarak yeniden açılacak.Swift: ABPeoplePickerNavigationController'ın kapatılmasını engelle

var picker = ABPeoplePickerNavigationController() 
picker.peoplePickerDelegate = self 
self.presentViewController(picker, animated: true, completion: nil) 

ben böyle bir şey yapmak mümkün istiyorum: Aşağıdaki Verilen örnek için

,

if (self.presentedViewController != picker && !userContinuedPastPicker) { 
//where userContinuedPastPicker is a boolean set to false 
//in a delegate method called when the user clicks on an a contact 
//(meaning the user didn't press the cancel button but instead clicked on a contact) 

    //create and present a UIAlertAction informing the user they must select a contact 

    //present picker again 
    self.presentViewController(picker, animated: true, completion: nil) 
} 

Bu çalışmaz; Ancak, if bildirimi, kullanıcı iptal düğmesine basana veya bir kişiye basana kadar "beklemez".

cevap

4

İptal düğmesini kaldırmanın ya da çalışmasını engellemenin bir yolu olduğundan emin değilim, ancak iptal düğmesinin basılı olduğu durumu işlemek için func peoplePickerNavigationControllerDidCancel(_ peoplePicker: ABPeoplePickerNavigationController!) temsilcisine yanıt verebilirsiniz.

Seçiciyi hemen yeniden açmaktan çok öneriyorum, kullanıcıyı birilerini seçmesi gerektiğini bildiren bir uyarı açın, ardından oradan açın. İptal ederse kırılabilir ve hemen geri açılabilir.

Reference

düzenleme:
bir uyarı sunmak veya seçici muhtemelen yeterince uzun bir önceki seçici kapatmak için ertelendi gerekmektedir. dispatch_after

+0

Bu neredeyse ihtiyacım olan şey gibi görünüyor! Ancak, bir "ABPPNC" veya bir "UIAlertController" örneğini sunmaya çalıştığımda (çok akıllıca önerildiğiniz gibi), bir hata mesajı alıyorum: Uyarı: sunma teşebbüsü: 0x7a06dd30> görünümü pencere hiyerarşisinde yok! ' – Randoms

+0

Tahmin et, kullanıcı seçiciyi ekrandan görüntülerken uyarı veriyorsunuz. Http://stackoverflow.com/questions/24034544/dispatch-after-gcd-in-swift adresinde bulunan alert için presentViewController dosyasını uyarıya sarmayı deneyin. – esthepiking

İlgili konular