代码之家  ›  专栏  ›  技术社区  ›  Randoms

Swift:防止ABPeoplePickerNavigationController关闭

  •  7
  • Randoms  · 技术社区  · 9 年前

    我想找出一种方法,如果用户在 ABPeoplePickerNavigationController ,视图控制器要么不关闭,要么将自动重新打开。

    例如,给定以下内容:

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

    我希望能够做到以下几点:

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

    这行不通;然而,因为 if 语句不会“等待”,直到用户按下取消按钮或按下联系人。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Community Egal    7 年前

    我不确定是否有方法删除取消按钮,或阻止其工作,但您可以响应 func peoplePickerNavigationControllerDidCancel(_ peoplePicker: ABPeoplePickerNavigationController!) 委托处理按下取消按钮的情况。

    我建议不要立即重新打开选择器,而是打开一个警告,告诉用户他们需要选择某人,然后从那里重新打开。如果他们取消了,它可能会感到破碎,并立即重新打开。

    Reference

    编辑:
    提示或选取器可能需要延迟足够长的时间才能关闭上一个选取器。 dispatch_after