在使用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];
}
这将解决问题。但Apple doc确实声明“ABPeoplePickerNavigationController类不支持子类化”。这是否意味着他们会拒绝任何继承此类陈述类的尝试?
注意:我不希望使用任何人工时间延迟作为解决方案。
答案 0 :(得分:1)
然后ABPeoplePickerNavigationController解散自己
有你的问题。它只是因为你没有解雇它而解雇自己。明确地,自己解雇它!在dismissViewControllerAnimated:completion:
实施中点击didSelectPerson:
。
现在你有一个完成处理程序,因此你可以在解雇完成后运行代码。