如何移除UIPrintInteractionController中的复制和保存到文件选项
iOS 15 打印预览拦截「复制/保存到文件」弹窗方案
前置前提
你需要操作的是系统打印组件UIPrintInteractionController对应的交互逻辑,以下是两种可行实现方向:
方案1:流程前置拦截(无审核风险,优先推荐)
- 第一步:提前校验打印机连接状态,在用户进入打印预览页、点击打印按钮前,先调用
UIPrintInteractionController的isPrintingAvailable属性判断当前是否有可用的已连接打印机,若无可用设备,直接弹出你自定义的「请先连接可用打印机」提示框,不触发系统打印执行逻辑。 - 第二步:替换系统预览页的原生打印按钮,你可以获取
UIPrintInteractionController的预览页导航栏,将右上角的系统打印按钮替换为自定义按钮,自定义按钮的点击逻辑仅做打印机状态校验:校验通过时才调用系统打印执行方法
print(animated:completionHandler:),校验不通过时只展示自定义提示,完全阻断系统默认弹窗的触发路径。
方案2:runtime 拦截弹窗(存在审核风险,仅做备用参考)
你可以通过hook UIViewController的presentViewController:animated:completion:方法,拦截系统弹窗的展示:
- 每次有弹窗要展示时,判断当前要弹出的控制器是否为
UIAlertController类型 - 遍历该弹窗的所有
action,检查是否同时包含标题为「复制」和「保存到文件」的选项 - 若匹配成功则取消本次弹窗展示,替换为你自定义的提示内容即可
内容的提问来源于stack exchange,提问作者Tarun Kumar
相关产品推荐
相关产品推荐

