在使用ABPeoplePickerNavigationController
时,当用户选择一个人,然后didSelecPerson
自行关闭时,将调用ABPeoplePickerNavigationController
委托。接收didSelectPerson
调用时,我需要提供另一个视图控制器。问题是ABPeoplePickerNavigationController
的动画在此阶段关闭还没有完成。因此,下一个视图控制器的呈现将产生一个错误。
如果我将ABPeoplePickerNavigationController
子类化并覆盖:
-(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
{
NSLog(@"%s", __PRETTY_FUNCTION__);
[super dismissViewControllerAnimated:flag completion:completion];
[self.myDelegate didDismissPickerCompletion];
}
这样可以解决问题。但是苹果文档确实声明“ABPeoplePickerNavigationController类不支持子类化”。这是否意味着他们将拒绝任何试图将此类分类为子类的尝试?
注意:我不希望使用任何人为的时间延迟作为解决方案。
最佳答案
然后ABPeoplePickerNavigationController关闭自身
有你的问题。它只是因为您没有将其关闭而将其关闭。明确将其自己关闭!在您的dismissViewControllerAnimated:completion:
实现中直接在此处调用didSelectPerson:
。
现在您有了完成处理程序,因此您可以在解雇完成后运行代码。
关于ios - ABPeoplePickerNavigationController类不支持子类化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30354402/