iOS16.0下PHPickerViewController设置selection为.people崩溃问题求助
解决PHPickerViewController设置
.people选择类型崩溃的问题 问题场景
在iOS 16.0、Xcode 14.0.1环境下,使用PHPickerViewController时,只要给PHPickerConfiguration设置config.selection = .people,就会触发以下问题:
- Picker界面直接显示“Unable to Load Photos”
- 控制台输出错误日志:
[Picker] Showing picker unavailable UI (reason: crashed) with error: (null) viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}
注释掉config.selection = .people这行代码后,Picker就能正常工作。
解决办法
升级iOS系统版本
这个问题是iOS 16.0的已知bug,苹果在iOS 16.1及后续版本中修复了该问题。如果可以,建议测试升级到iOS 16.1或更高版本的设备,.people选择类型就能正常使用。iOS 16.0兼容方案
如果需要适配iOS 16.0版本,可以做版本判断:
var config = PHPickerConfiguration() if #available(iOS 16.1, *) { config.selection = .people } else { // 降级处理,比如使用默认选择类型,或者提示用户升级系统 config.selection = .default }
或者如果必须筛选人像照片,可以先用普通Picker让用户选择照片,之后通过PHAsset的faceCount属性判断是否为人像照片,手动筛选。
- 确认照片权限
虽然注释掉.people设置后功能正常,但还是要确保项目已经正确配置照片访问权限:
- 在
Info.plist中添加NSPhotoLibraryUsageDescription(或NSPhotoLibraryAddUsageDescription,根据需求选择),并填写合理的权限说明文本。
内容的提问来源于stack exchange,提问作者fabrizio sposetti
相关产品推荐
相关产品推荐

