使用UIImagePickerController打开相机时取消按钮显示API_CANCEL_TITLE如何解决
问题原因
UIImagePickerController的取消按钮显示API_CANCEL_TITLE是系统组件加载本地化字符串失败导致的,通常和项目国际化配置不完整、或是自定义字符串覆盖了系统key有关。
解决方案
你可以根据项目需求选择以下方案修复:
方案1:补全项目国际化配置(推荐)
这个方案可以一次性修复所有系统原生组件的文案显示异常问题:
- 打开项目的
Info.plist文件,添加CFBundleAllowMixedLocalizations字段,值设置为YES,允许App加载系统组件的本地化资源 - 确认项目的「Localizations」配置列表中已经添加了你需要适配的目标语言(比如简体中文、英文等)
方案2:手动设置取消按钮文案
如果不需要适配多语言,也可以手动修改按钮的显示文案,代码示例如下:
let imagePicker = UIImagePickerController() imagePicker.delegate = self imagePicker.sourceType = .camera imagePicker.allowsEditing = false // 手动设置取消按钮文案 imagePicker.navigationBar.topItem?.rightBarButtonItem?.title = "取消" // 如需全局统一配置,也可以使用外观代理设置 UIBarButtonItem.appearance(whenContainedInInstancesOf: [UIImagePickerController.self]).title = "取消" self?.parentViewController?.present(imagePicker, animated: true)
若设置后不生效,可以在present的完成回调中再次修改文案,避免系统默认赋值覆盖自定义设置。
异常排查
如果以上方案都没有生效,检查项目中是否存在名为API_CANCEL_TITLE的本地化key,避免自定义的字符串覆盖了系统的默认定义。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

