I am loading ABPeoplePickerNavigationController
. On the click of a contact in the peoplepicker, I am checking a condition
if([navigationController isKindOfClass:[ABPeoplePickerNavigationController class]]
&& [viewController isKindOfClass:[ABPersonViewController class]]){
//Statements
}
But in IOS 7 I have noticed that, the second condition, that is
[viewController isKindOfClass:[ABPersonViewController class]
returns NO all the time. I know that the viewcontroller that is loaded is ABPersonViewController
.
This was/is working fine until IOS 6. What could be the problem? Is there anyway I can get around this issue.
Edit:
The condition is checked inside UINavigationController
Delegate
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
And the viewController class is shown as ABContactViewController
when logged.
When checking your class you will find that iOS7 returns a different type.
Review the logic for which you need the check. You should not have to use introspection to react appropriately to a people picker action. Just implement the standard delegate method from ABPeoplePickerNavigationControllerDelegate. In particular, you have to implement:
- (BOOL)peoplePickerNavigationController:
(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person;