2015-03-15 1 views
1

У меня возникли некоторые проблемы с этим .. Я вижу, что мы должны использовать свойство:Как обработать выбор свойства в ABPeoplePickerNavigationController?

predicateForSelectionOfProperty

для определения того, какие свойства получить «выбран», и я на самом деле вроде стрельнул для не будучи

predicateForEnablingProperty

, потому что я хочу только номера телефонов, для моего случая использования.

Это говорит, что я не использую for predicateForSelectionOfProperty, похоже, делает то, что я хочу. Я хочу, когда я выбираю номер телефона контакта, он должен вызвать обратный вызов делегата .. но вместо этого прямо сейчас он вызывает их!

Возможно, я просто что-то упустил, потому что на самом деле я бы просто имел список моих контактов, с номерами телефонов и показывал только номера телефонов. Может быть, я даже не направляюсь в правильном направлении, это.

Спасибо за любую помощь, которую вы можете предложить!

ответ

1
  1. Если вы не хотите, чтобы позвонить по номеру, вы должны:

    • указать peoplePickerDelegate; и

    • реализации peoplePickerNavigationController:didSelectPerson:property:identifier:

    • не указать predicateForSelectionOfProperty (или, если вы это сделаете, убедитесь, что он возвращает true, например, NSPredicate(value: true))

  2. Очевидно, что если вы даже не хотите, чтобы он показывал вам несвязанную информацию о контактах, укажите массив displayedProperties, например

    controller.displayedProperties = [NSNumber(int: kABPersonPhoneProperty)] 
    
  3. В качестве альтернативы, если вы хотите, чтобы настроить этот интерфейс дальше, вы могли бы просто использовать AddressBook.framework, чтобы извлечь телефонные номера из адресной книги и присутствует независимо от интерфейса вы хотите.

+0

1. Я сделал реализовать peoplePickerNavigationController: didSelectPerson: Свойство: идентификатор и он никогда не вызывается. 2. Спасибо, это должно быть очень полезно (было не так очевидно для меня, но, возможно, это было когда-то, когда я работал с другим материалом) 3. Мне, возможно, придется пройти этот маршрут (в конце концов, если не сейчас). Посмотрим. Итак, # 1 не работает для меня .. в принципе, у меня есть набор делегатов, но метод NEVER вызывается. =/ –

+1

Вы уверены, что настраиваете 'peoplePickerDelegate', а не' делегат'? Кроме того, вы уверены, что подпись метода точно верна (потому что, если вы ошибочно называете имя метода, оно не будет предупреждать вас, поскольку этот метод является необязательным). – Rob

+0

Интересно, что я случайно вызывал .delegate вместо.peoplePickerDelegate, но я изменил его сейчас, и до сих пор метод: - (Недействительными) peoplePickerNavigationController: (ABPeoplePickerNavigationController *) peoplePicker didSelectPerson: (ABRecordRef) человек свойство: (ABPropertyID) Идентификатор объекта: (ABMultiValueIdentifier) ​​Идентификатор не является вызывается. Раньше существовал «mustContinueAfterSelectingPerson: property», но он устарел :( Я буду копаться в этом больше. Спасибо за вашу помощь до сих пор .. –