Xcode6 上面关于ios8系统通讯录调用的代理方法变更;

来源:互联网 发布:空气质量检测软件 编辑:程序博客网 时间:2024/05/19 14:53


最近测试发现了个问题,以前调用通讯录的代码工程用Xcode6打包后,在ios8系统上通讯录调用不了,点击没有任何反应;

真机测试时,发现调用通讯录的代理方法不调用了,链接进去看,就明白了:

// Deprecated, use predicateForSelectionOfPerson and/or -peoplePickerNavigationController:didSelectPerson: instead.

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)personNS_DEPRECATED_IOS(2_0, 8_0);


// Deprecated, use predicateForSelectionOfProperty and/or -peoplePickerNavigationController:didSelectPerson:property:identifier: instead.

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierNS_DEPRECATED_IOS(2_0, 8_0);

这两个代理方法废弃了,用新的方法代替,新的代理方法里也不需要dismiss消失了;新的代理:

-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person


-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier


为了能兼容之前的系统,原来的代理方法保留,新增这两个代理方法,但是发现有个问题,当我添加这两个方法后,运行点击调用通讯录后,选中人名后直接就返回了,原本人名后的号码详细页面没有弹出来;后来发现只需要添加didSelectPerson: property: 这个代理方法就可以了,第一个didSelectPerson方法不需要添加;通讯录问题就此解决了。。。


0 0
原创粉丝点击