iOS中UIActivityViewController返回后无法点击选项的问题咨询
iOS UIActivityViewController 分享后无法再次点击选项问题原因分析
问题场景
在iOS中通过主线程展示分享选项,分享内容为PDF数据的URL。点击跳转第三方应用(如谷歌Chrome)后返回原应用,无法再点击UIActivityViewController的其他选项,控制台出现如下警告:
[ShareSheet] Trying to perform <UISocialActivity: 0x282b64a50> activityType:com.apple.mobilenotes.SharingExtension activityTitle:UISocialActivity but there is already an activity performing:<SHSheetActivityPerformer: 0x283f427d0>
当前实现代码:
let ac = UIActivityViewController(activityItems: [url], applicationActivities: nil) DispatchQueue.main.async { self.present(ac, animated: true) }
问题原因
- 分享Sheet内部状态未正确重置:当跳转第三方应用后,系统分享组件的
SHSheetActivityPerformer实例仍被标记为"正在执行"状态。返回原应用时,该状态未被自动清理,导致后续触发新分享动作时,系统检测到已有活跃的执行器,直接阻止操作并抛出警告。 - 生命周期回调异常:第三方应用跳转过程中,原应用的UIActivityViewController未收到完整的生命周期回调(如
activityDidFinish:),无法及时更新内部状态,造成状态不一致。 - PDF URL状态潜在影响:若用于分享的PDF URL是临时生成的本地URL,跳转第三方后URL的可用性或关联状态发生变化,也可能间接干扰分享Sheet的状态管理逻辑。
内容的提问来源于stack exchange,提问作者pkc
相关产品推荐
相关产品推荐

