0

我正在加载ABPeoplePickerNavigationController。点击人员选择器中的联系人,我正在检查一个条件

if([navigationController isKindOfClass:[ABPeoplePickerNavigationController class]]
   && [viewController isKindOfClass:[ABPersonViewController class]]){

  //Statements

}

但在 IOS 7 中,我注意到第二个条件,即

[viewController isKindOfClass:[ABPersonViewController class]

一直返回 NO。我知道加载的视图控制器是ABPersonViewController. 在 IOS 6 之前,这一直/正在正常工作。可能是什么问题?无论如何我可以解决这个问题。

编辑:

UINavigationController在Delegate内部检查条件

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

并且 viewController 类显示为ABContactViewController登录时。

4

1 回答 1

1

检查您的课程时,您会发现 iOS7 返回了不同的类型。

查看需要检查的逻辑。您不必使用自省来对人员选择器操作做出适当的反应。只需从 ABPeoplePickerNavigationControllerDelegate 实现标准委托方法。特别是,您必须实施:

- (BOOL)peoplePickerNavigationController:
    (ABPeoplePickerNavigationController *)peoplePicker 
     shouldContinueAfterSelectingPerson:(ABRecordRef)person;
于 2013-10-07T13:45:03.397 回答