ABPeoplePickerNavigationController 慢吗?

Is ABPeoplePickerNavigationController slow?

当使用 ABPeoplePickerNavigationController 时,加载和显示控件需要一些时间(~0.5 秒),这比其他弹出窗口的正常反应时间要慢。

我提出了解决方案,将控制器设置为变量并通过以下方式访问此预加载对象:

[self presentViewController:self.peoplePicker animated:YES completion:nil];

出于好奇,是否有另一种无需预加载即可启动选取器的方法?

同样如此,我没有解决问题的答案,我认为这可能是一个 iOS 8 错误(更新:是的, Apple 证实了这一点)。

在我对 iOS 7.x 的测试中,ABPeoplePicker 显示时间少于 0.2 秒。

问题仅在 iOS 8.x 上出现,并且仅在您第一次显示 ABPeoplePicker 时出现。 ABPeoplePicker 演示文稿在我的应用程序中大约需要 3 秒,在示例应用程序中大约需要 1.5 秒,该示例应用程序仅通过按下按钮进行 ABPeoplePicker 演示文稿.我在模拟器和设备上用 ~20 个触点测试了它。

预加载实例并没有像我预期的那样显着改变演示时间。 我还尝试在主线程上强制演示并将动画设置为 NO,但它在 iOS 8.

上仍然很慢

时间分析器对我没有帮助,因为我看不到意外的长时间计算。

当我们等待假定的错误修复时,我认为最好的解决方法是在加载 ABPeoplePicker 时显示 activity 进度指示器或实现我们自己的 ABPeoplePicker.

我已经实现了自己的,你可以在GitHub:VeeContactPicker上找到它,当然可以使用它!

来自苹果的新闻:

Apple 团队回复了我的错误报告:

Apple 开发者关系 2015 年 6 月 16 日 00:36 上午

我们认为这个问题已在最新的 iOS 9 beta 中得到解决。 这是预发布 iOS 9 更新。 请参阅发行说明以获取完整的安装说明。 请使用此版本进行测试。如果您仍有问题,请提供任何相关日志或信息以帮助我们进行调查。*

iOS 9 次更新

在 iOS 9 中,ABFramework 已被弃用,因为新的面向对象的联系人框架带有新的选择器 [请参阅 CNContactPicker]!不幸的是,问题似乎还没有解决,逻辑已经更新,但 ViewController 仍然与 iOS 8 相同。所以 CNContactPicker 仍然很慢加载并显示控件...

我已将错误报告给 Apple,等待消息...