当使用ABPeoplePickerNavigationController
时,需要片刻(约0.5秒)加载并显示比其他弹出窗口的正常反应时间慢的控件。
我附带解决方案将控制器设置为变量并通过以下方式访问此预加载对象:
[self presentViewController:self.peoplePicker animated:YES completion:nil];
出于好奇,还有另一种方法可以在没有预加载的情况下点亮拣货员吗?
答案 0 :(得分:4)
同样在这里,我没有解决问题的答案,我认为这可能是iOS 8的错误(更新:是的,Apple确认了它。)
在我对iOS 7.x的测试中, ABPeoplePicker 的演示时间不到0.2秒。
问题仅出现在iOS 8.x上,并且仅在您第一次出现 ABPeoplePicker 时出现。 ABPeoplePicker 演示文稿在我的应用程序中大约需要3秒,在一个示例应用程序中大约需要1.5秒,只需按一下按钮即可显示 ABPeoplePicker 演示文稿。我在模拟器和设备上进行了大约20次接触测试。
预加载实例并没有像我预期的那样显着改变演示时间。 我也尝试在主线程上强制演示并将动画设置为NO,但在iOS 8上它仍然很慢。
时间分析器对我没有帮助,因为我无法看到意外的长时间计算。
在我们等待假定的错误修复时,我认为最好的解决方法是在加载ABPeoplePicker时显示活动进度指示器或实现我们自己的 ABPeoplePicker 。
我已经实现了自己的,你可以在GitHub上找到它:VeeContactPicker,当然还可以使用它!
来自APPLE的新闻:
Apple团队回答了我的错误报告:
Apple Developer Relations 16-Jun-2015 00:36 AM
我们认为此问题已在最新的iOS 9测试版中得到解决。 这是预发布的iOS 9更新。 有关完整的安装说明,请参阅发行说明。 请测试此版本。如果您仍有问题,请提供可帮助我们调查的任何相关日志或信息。*
iOS 9更新
在iOS 9中,ABFramework已被弃用于新的面向对象的联系人框架,该框架附带了一个新的选择器[见CNContactPicker]!不幸的是,问题似乎尚未解决,逻辑已经更新,但ViewController仍然与iOS 8相同。因此CNContactPicker
加载和显示控件的速度仍然很慢。 ..
我向Apple报告了这个错误,等待新闻......