2014-09-25 10 views
5

In ios8 möchte ich auf die Kontakteigenschaften zugreifen, wenn er mehr als einen Nummerntelefon hat, aber ich weiß nicht, wie es in iOS8 funktioniert.Zeigen Sie Kontakteigenschaften an, wenn es mehrere Telefonnummern mit ios8 hat.

Hier ist mein Code in iOS7:

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{ 

    //If person has just one phone number 
    ABMultiValueRef phonesRef = ABRecordCopyValue(person, kABPersonPhoneProperty); 
    if(ABMultiValueGetCount(phonesRef) == 1){ 

     CPIContact* contact = [self getCPIContactFromPerson:person andPhoneIndex:0]; 
     [self addContact:contact]; 

     // Dismiss the address book view controller. 
     [_addressBookController dismissViewControllerAnimated:YES completion:nil]; 
     return NO; 

    }else if(ABMultiValueGetCount(phonesRef) == 0){ 

     [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Common_information",nil) message:NSLocalizedString(@"EditCallSMS_noNumber", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Common_ok",nil) otherButtonTitles:nil] show]; 

     return NO; 
    } 
    else{ 
     return YES; 
    } 

} 

Ich weiß, ich habe die Methode didSelectPerson von iOS8 zu verwenden, aber ich weiß nicht, wie die App zu sagen, dass es nach der Wahl einer Person wie in weiter iOS7.

Ich las über PrädikatForSelectionOfPerson auf Apple-Dokumentation, aber ich verstehe nicht, wie man es benutzt.

https://developer.apple.com/library/ios/documentation/AddressBookUI/Reference/ABPeoplePickerNavigationController_Class/index.html#//apple_ref/occ/instp/ABPeoplePickerNavigationController/predicateForSelectionOfProperty

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

10

diese hinzufügen, wo Sie die Menschen Picker instanziiert:

if ([peoplePicker respondsToSelector:@selector(setPredicateForSelectionOfPerson:)]) 
{ 
    peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithFormat:@"%[email protected] > 1", ABPersonPhoneNumbersProperty]; 
} 

Dies wird nur mit 2 oder mehr Telefonnummern wählen Kontakte lassen. Für andere Kontakte werden Ihnen die Kontaktdaten angezeigt.

+1

Danke! Das habe ich gebraucht! Es war das Gegenteil ("% K. @ count <2"), aber jetzt verstehe ich, wie Prädikate mit dem Personenwähler verwendet werden. – Leep

+0

Möglicherweise müssen Sie auch: if ([Picker respondsToSelector: @selector (setPredicateForEnablingPerson :)]) { picker.predicateForEnablingPerson = [NSPredicate predicateWithFormat: @ "Emailadressen @ count> 0"]; } Ohne diese würde meine App überhaupt keinen Kontakt auswählen –

+0

@Leep Wenn ich hinzufügen '("% K. @ count <2 ")', Alle Kontakte mit weniger als zwei Telefonnummern sind ausgegraut. – user1324887