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
相关产品推荐
相关产品推荐

