在 IOS 7 中检查当前视图控制器类是否为 ABPersonViewController 时出现问题



我正在加载ABPeoplePickerNavigationController .单击人员选择器中的联系人时,我正在检查条件

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

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

[viewController isKindOfClass:[ABPersonViewController class]

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

编辑:

UINavigationController代表内部检查条件

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

并且 viewController 类在记录时显示为ABContactViewController

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

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

- (BOOL)peoplePickerNavigationController:
    (ABPeoplePickerNavigationController *)peoplePicker 
     shouldContinueAfterSelectingPerson:(ABRecordRef)person;

最新更新