【问题标题】:How to use CNContactViewController just for creating new contacts? (Swift)如何使用 CNContactViewController 来创建新联系人? (迅速)
【发布时间】:2023-03-10 20:48:01
【问题描述】:

我有一个需要添加联系人的应用。为此,我想使用 ContactsUI 框架中的 CNContactViewController(forNewContact: nil)。

我的实现方法如下

class myClass: UITableViewController, CNContactViewControllerDelegate {
    // ...
    @objc fileprivate func addTapped() {
        print("add tapped")

        let createContactcontroller = CNContactViewController(forNewContact: nil)
        controller.delegate = self

        navigationController?.pushViewController(controller, animated: true)
    }

    func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
        // Service.shared.addContact(contact: contact)
    }

}

但是有几个问题我解决不了:

  1. 动画看起来很滞后。
  2. 当用户完成创建联系人并点击完成后,CNContactViewController 用于配置文件(如在联系人应用程序中) 显示,而不是仅仅返回到 tableViewController。我该如何修改?

  1. 我收到以下错误:

2019-11-16 10:29:48.480636+0100 闪回[11688:541742] [快照] 快照视图(0x7fc76481a420,_UIButtonBarStackView) 至少没有渲染一次需要 afterScreenUpdates:YES。 2019-11-16 10:29:48.482425+0100 闪回[11688:541742] [快照] 快照视图(0x7fc76481d020,_UIButtonBarStackView) 至少没有渲染一次需要 afterScreenUpdates:YES。 2019-11-16 10:29:48.484897+0100 闪回[11688:541742] [快照] 快照视图(0x7fc76481d5c0,_UIButtonBarStackView) 至少没有渲染一次需要 afterScreenUpdates:YES。 2019-11-16 10:29:48.488071+0100 闪回[11688:541742] [快照] 快照视图 (0x7fc76481d9f0, _UIButtonBarStackView) 至少没有渲染一次需要 afterScreenUpdates:YES。 2019-11-16 10:29:48.489883+0100 闪回[11688:541742] [快照] 快照视图(0x7fc7626228e0,_UIButtonBarStackView) 至少没有渲染一次需要 afterScreenUpdates:YES。 2019-11-16 10:29:48.491904+0100 闪回[11688:541742] [快照] 快照视图 (0x7fc7626102d0, _UIButtonBarStackView) 至少没有渲染一次需要 afterScreenUpdates:YES。

【问题讨论】:

  • 这也不起作用:imgur.com/a/STuopuD
  • for 1.动画看起来很卡,推前设置背景颜色。 createContactcontroller.view.backgroundColor = .white
  • @RatneshJain 效果很好。你有我的参考资料,我可以在其中查找发生这种情况的原因吗?当前状态:imgur.com/a/L3cU4Fv
  • UIView 具有可选的 backgroundColor 属性。 @NSCopying open var backgroundColor: UIColor? 所以默认值为nil。因此 iOS 将其呈现为黑色或无色。当您从 Xib 或 Storyboard 初始化任何 UIView 或 UIViewController 时,它会在 xml 中设置视图背景颜色。所以你不需要在代码中设置背景颜色。 <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>(您可以将情节提要作为代码打开并搜索 backgroundColor 属性)。
  • 他们不是你的错误。别理他们。我的书说的是,这东西是灾难性的错误。

标签: swift uitableview ios13 contactsui


【解决方案1】:

您错误地使用了这个视图控制器。

您不能将其推到现有的视图控制器上。相反,您使用 CNContactViewController 作为其根视图控制器来实例化 UINavigationController,并将导航控制器作为呈现的视图控制器呈现。然后,您必须在 contactViewController(_:didCompleteWith:) 的实现中自己关闭显示的导航控制器。

还要注意这个错误,它会导致这个视图控制器在很大程度上无法使用:

Keyboard overlaying action sheet in iOS 13.1 on CNContactViewController

【讨论】:

  • 苦于键盘取消问题:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
相关资源
最近更新 更多