gpt4 book ai didi

macos - CNContactPicker - 所有联系人都是灰色的

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:29 25 4
gpt4 key购买 nike

我似乎无法让 CNContactPicker 工作。我已经观看并重新观看了 WWDC session 223。对于 iOS 版本的选择器,您设置了一个谓词来启用联系人以供选择,但 OS X 版本没有等效项。据我了解,如果您的代表支持 contactPicker(picker: CNContactPicker, didSelectContact contact: CNContact) 并且您不提供任何显示的键,则选择器将配置为选择联系人。这是示例代码。当我使用它时,联系人都是灰色的,并且永远不会调用委托(delegate)方法。

提前致谢

func selectContact() {  

let contactStore = CNContactStore(
contactStore.requestAccessForEntityType(CNEntityType.Contacts, completionHandler:{(bool: Bool, error: NSError?) -> Void in
print("access granted = \(bool)")
})

let contactPicker = CNContactPicker()
contactPicker.delegate = self
contactPicker.showRelativeToRect(NSRect(x: 0, y: 0, width: 200, height: 500), ofView: view, preferredEdge: NSRectEdge.MinX)

}

//Delegate method
func contactPicker(picker: CNContactPicker, didSelectContact contact: CNContact) {
print(contact)
}

最佳答案

这似乎是 CNContactPicker 的内存管理问题。我设法通过在外部范围内保留对它的引用来实现它:

let picker = CNContactPicker()

@IBAction func import(sender: NSButton) {
picker.delegate = self

let contactStore = CNContactStore()
contactStore.requestAccessForEntityType(CNEntityType.Contacts, completionHandler:{(bool: Bool, error: NSError?) -> Void in
print("access granted = \(bool)")
if bool {
dispatch_async(dispatch_get_main_queue()) {
self. picker.showRelativeToRect(sender.frame, ofView: sender.superview ?? self.view, preferredEdge: .MaxY)
}
}
})
}

func contactPicker(picker: CNContactPicker, didSelectContact contact: CNContact) {
picker.close()
print("Chose contact \(contact)!")
}

请注意,一切看起来仍然是灰色的(也许它应该看起来像那样?)但至少调用了委托(delegate)方法。

关于macos - CNContactPicker - 所有联系人都是灰色的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069901/

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