You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS/iPadOS应用首次启动时通讯录权限系统弹窗被ViewController遮挡的问题求助

iOS/iPadOS应用首次启动时通讯录权限系统弹窗被ViewController遮挡的问题求助

各位好,我现在在做一个需要访问通讯录的iOS/iPadOS应用原型,遇到个挺闹心的问题,想请大家帮忙看看。

首次启动应用的时候,系统的通讯录权限弹窗(已经在Info.plist里配置了用途描述)居然被ViewController给挡住了!我特意开了模拟器的Slow Animations慢动效模式确认,发现这个系统弹窗根本不会显示在最上层,要么是在ViewController加载完成后才弹出来,要么就是直接被压在了下面,完全看不到。

为了排除项目其他代码的干扰,我专门新建了一个干净的测试项目:

  • 环境:Xcode 16
  • 项目模板:iOS App + Storyboard + Swift
  • Info.plist里的权限配置:
<key>NSContactsUsageDescription</key>
<string>foo</string>

ViewController里触发权限请求的代码是这样的:

import Contacts

...

override func viewWillAppear(_ animated: Bool) {
    print(#function)
    do {
        print("pretrigger")
        let store = CNContactStore()
        print("triggered?")
        try store.groups(matching: nil) // 这行代码用来触发权限请求
        print("triggered2?")
    } catch { }
}

更奇怪的是,这个问题只出现在系统权限弹窗上——如果我自己实现类似CNContactPickerDelegate这类自定义的ViewController,它会正常显示在当前ViewController的上层,完全符合预期。有没有人遇到过类似的情况,或者知道该怎么解决这个问题呀?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 12:23:13