在升级到iOS9后,我注意到我的应用程序中有不同的行为。我有一个视图显示手机的设备联系人。
我的代码如下:
if (... == YES)
{
ABRecordSetValue(aContact, kABPersonEmailProperty, email, &anError);
if (anError == NULL)
{
ABUnknownPersonViewController *picker = [[ABUnknownPersonViewController alloc] init];
picker.unknownPersonViewDelegate = self;
picker.displayedPerson = aContact;
picker.allowsAddingToAddressBook = YES;
picker.allowsActions = YES;
picker.alternateName = @"John Appleseed";
picker.title = @"John Appleseed";
picker.message = @"Company, Inc";
[self.navigationController pushViewController:picker animated:YES];
}然后我用代表来做一些决定
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
//make decisions
return YES or NO;
}用户点击一个电话号码。
In IOS8 >>代码到达shouldContinueAfterSelectingPerson,然后出现本机拨号程序。
In IOS9 >>本机拨号程序出现在代码到达shouldContinueAfterSelectingPerson之前。
有办法解决吗?
发布于 2015-10-07 17:09:23
我也面临着同样的问题。我注意到的是,如果您在委托方法中执行某些计算(显然需要一些时间来进行计算),则调用本机拨号程序。
因此,为了避免这个问题,我将立即从这个委托方法返回NO,并在另一个线程中执行我的计算。这当然是一个解决办法,希望在下一个版本的iOS中解决这个问题。
https://stackoverflow.com/questions/32887251
复制相似问题