2014-11-02 104 views
2

我已經在我的IOS 8人員選取代表代碼中遇到一個奇怪的問題。只有IOS 8 - 的ABPeoplePickerNavigationController - 取消委託方法的工作,別人不

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker; 
{ 
    [self dismissViewControllerAnimated:YES completion:NULL]; 
} 

方法正在被調用。我已審查其他問題,並通過調用舊IOS 7方法

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier: (ABMultiValueIdentifier)identifier { 
    [self peoplePickerNavigationController:peoplePicker shouldContinueAfterSelectingPerson:person property:property identifier:identifier]; 
} 

做出選擇聯繫人的重要IOS 8委託方法的變化,但它永遠不會被調用。

我設置在調用視圖 - 控制didLoad委託,

和它完美的作品在IOS 7。這是一個故事板的應用程序。

我看到了同樣的問題在這裏評論問:ABPeoplePickerNavigationController changes with iOS8?

,但從來沒有找到答案。很明顯,我的某個地方出了錯,但我找不到它。

更新:根據要求,這裏是我如何設置委託:

self.picker = [[ABPeoplePickerNavigationController alloc] init]; 
self.picker.peoplePickerDelegate = self; 

而且,在@interface:

@interface TreatmentsAddEntryTVC : UITableViewController<UITextViewDelegate,ABPeoplePickerNavigationControllerDelegate> 

回答

0

嘗試使用此委託方法,而不是看它是否點擊:

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person; 
{ 
    // yes the below line is deprecated as of iOS 8 
    [self peoplePickerNavigationController:peoplePicker shouldContinueAfterSelectingPerson:person]; 
} 
+0

我已經擁有了它 - 並沒有命中。 – jmf1205 2014-11-02 06:17:19

+0

您在視圖控制器的.h文件中爲您的「@ interface'」聲明添加了「」嗎?另外,您應該編輯您的問題以顯示如何在視圖控制器中設置委託。 – 2014-11-02 06:30:25

+0

將您的聲明更改爲:「'@interface TreatmentsAddEntryTVC:UITableViewController '」並查看會發生什麼情況。 – 2014-11-02 06:41:21

0

我討厭回答我自己的問題,特別是當答案沒有意義,但移動時:

self.picker = [[ABPeoplePickerNavigationController alloc] init]; 
self.picker.peoplePickerDelegate = self; 

從didLoad到其中我真的想顯示選取器的方法解決了問題。我已經看到至少一個其它問題上SO其中這種行爲指出和討論:

Cannot select contact on iOS 8

+0

我面臨同樣的問題,我試過你在這裏提到的,你有沒有找到其他解決方案?請分享,如果你有。 – TKutal 2016-07-22 06:25:57

+0

抱歉,延遲迴復 - 這就是我所能告訴你的。如果你仍然陷入困境,我會很樂意挖掘我的舊代碼,尋找可能有用的東西。 – jmf1205 2016-08-25 15:11:25

0

對於與iOS 8.1, 一個項目我取代這種方法

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

與此

當我選擇了接觸並擊中
-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person{ 
} 

和新方法。