【发布时间】:2015-10-11 20:39:56
【问题描述】:
我似乎无法让 CNContactPicker 工作。我已经观看并重新观看了 WWDC 会话 223。看起来对于 iOS 版本的选择器,您设置了一个谓词来启用联系人进行选择,但 OS X 版本没有等效项。据我了解,如果您的代表支持 contactPicker(picker: CNContactPicker, didSelectContact contact: CNContact) 并且您不提供任何显示键,则选择器将配置为选择联系人。这是示例代码。当我使用它时,联系人都是灰色的,并且永远不会调用委托方法。
提前致谢
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)
}
【问题讨论】:
-
您有访问权限吗? (这并不重要;在 iOS 上,您不需要访问权限即可使用选择器。)
-
另一种可能是这东西刚刚坏掉了。很多联系人 UI 的东西在 iOS 上被损坏了,那么 OS X 为什么要分担痛苦呢? :)
-
当我运行它时,打印命令返回 true。我有这个来验证它不是访问问题。有趣的是很多联系人 UI 的东西被破坏了;这让我觉得可能没有针对选择器问题的当前解决方案:|
-
我刚刚测试了选择器,它可以工作。但是你说得对,联系人是灰色的。