【问题标题】:avoid CNContactPickerViewController to show emails避免 CNContactPickerViewController 显示电子邮件
【发布时间】:2016-09-26 10:54:53
【问题描述】:

我使用以下代码在我的应用程序中显示联系人列表:

    self.contactPicker = [[CNContactPickerViewController alloc] init];
    self.contactPicker.delegate = self;
    self.contactPicker.predicateForSelectionOfContact =
    [NSPredicate predicateWithFormat:@"TRUEPREDICATE"];

    [viewController presentViewController:self.contactPicker
                                 animated:YES
                               completion:nil
     ];

该页面显示所有联系人,包括电子邮件。我只想显示数字(而不是电子邮件)NSPredicateCNContactPickerViewController 本身是否有任何选项可以仅显示数字?

我也用过:

        self.contactPicker.displayedPropertyKeys = @[@"phoneNumber"];

但它也不起作用。

【问题讨论】:

    标签: ios objective-c contacts


    【解决方案1】:

    displayedPropertyKeys 使用此属性来控制所有字段应该可见的内容。

    Swift 5.2 示例

    let contactViewController = CNContactPickerViewController()
    contactViewController.displayedPropertyKeys = [CNContactPhoneNumbersKey]
    
    // ... add delegate, present it, etc.
    

    完整的密钥列表可以在https://developer.apple.com/documentation/contacts/contact_keys找到。

    【讨论】:

    • 应该是self.contactPicker.displayedPropertyKeys = @[@"phoneNumbers"];。它应该遵守CNContact 中声明的键
    • 我将“phonenumber”替换为“phoneNumbers”,但它仍然显示电子邮件
    【解决方案2】:

    如果您只想在选择联系人时显示联系人的电话号码,请使用displayedPropertyKeys 属性:

    self.contactPicker.displayedPropertyKeys = @[CNContactPhoneNumbersKey];
    

    但是,如果您甚至不想选择那些没有电话号码的联系人,您需要设置predicateForEnablingContact

    self.contactPicker.predicateForEnablingContact = [NSPredicate predicateWithFormat:@"%K.@count > 0", CNContactPhoneNumbersKey];
    

    我注意到您使用的是self.contactPicker.predicateForSelectionOfContact。但是如果这个人有多个电话号码怎么办?你打算用哪一个?就个人而言,我倾向于根本不设置该属性,或者如果您愿意,如果有多个电话号码,也许允许用户深入并选择所需的电话号码:

    self.contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"%K.@count == 1", CNContactPhoneNumbersKey];
    

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 2014-05-25
      • 2012-01-16
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2012-11-28
      相关资源
      最近更新 更多