gpt4 book ai didi

ios9 - CNContactViewController forUnknownContact 不可用,破坏接口(interface)

转载 作者:行者123 更新时间:2023-12-05 01:14:55 24 4
gpt4 key购买 nike

[iOS 10 似乎已修复!] 所以以下内容仅适用于 iOS 9...

我一直在尝试使用 Apple 的新 Contacts 框架,在 CNContactViewController 的三种形式之一中发现了一个巨大的错误。它破坏了周围的界面,使您的应用程序变得无用;用户被卡住了。

为了让这个 bug 更容易被发现,我在 https://github.com/mattneub/CNContactViewControllerBug 发布了一个示例项目。 .

要进行实验,请运行项目并执行以下步骤:

  • 点击按钮(未知人)。
  • 如果请求,授予访问权限。
  • 在我们的导航界面中,您会看到部分联系人(请注意顶部的后退按钮)。
  • 点击添加到现有联系人。出现联系人选择器。
  • 点击取消。你从这里做什么实际上并不重要,但点击取消是最简单的,也是解决错误的最快方法。
  • 我们现在回到了部分联系,但是导航界面不见了。用户无法逃离这个界面。该应用程序已被冲洗。

  • 为了澄清起见,这里是您需要采取的步骤的屏幕截图:

    enter image description here

    点击添加到现有联系人以查看:

    enter image description here

    点击取消查看;观察它与第一个屏幕截图相同,但导航栏不见了:

    enter image description here

    我已经尝试了很多方法来解决这个错误,但似乎没有办法。据我所知,这个窗口是由“进程外”框架呈现的,而不是你的应用程序的一部分。你无法摆脱它。

    那么问题是什么?我想是这样的:谁能告诉我一种使这个 View Controller (以这种形式)可用的方法?有没有我没有找到的解决方法?

    编辑 此错误出现在 iOS 9.0 中,并且仍然存在于 iOS 9.1 中。在评论中,@SergeySkopus 报告说切换到已弃用的通讯簿框架并没有帮助。该错误位于某处的底层结构中。

    最佳答案

    我使用类别隐藏了 UINavigationController 方法以显示或隐藏导航栏:

    @interface UINavigationController (contacts)
    @end

    @implementation UINavigationController (contacts)

    - (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated {
    NSLog(@"Hide: %d", hidden);
    }
    @end

    这样 CNContactViewController 不能使导航栏消失。在 NSLog 上设置断点我发现这个方法是由私有(private)的 [CNContactViewController isPresentingFullscreen:] 调用的。 .

    通过检查 self.topViewController导航 Controller 的类是 CNContactViewController您可以决定是否隐藏导航栏。

    关于ios9 - CNContactViewController forUnknownContact 不可用,破坏接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32973254/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com