避免CNContactPickerViewController显示电子邮件

时间:2016-09-26 10:54:54

标签: ios objective-c contacts

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

    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"];

但它也不起作用。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您只想在选择联系人时显示联系人的电话号码,请使用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];