2012年7月11日 星期三

AddressBook & AddressBookUI Framework

這次替朋友做一個 App
它需要用到 AddressBook 的功能,取得某人的單一個電話
所以就去找了這方面的資訊
不過這部份書本的資料也不多,所以改成去網路上找
找了很久才找到幾個比較實用資料,並且將它整合在一起

使用 AddressBook 的功能時,你會需要 AddressBook.framework 與 AddressBookUI.framework 這兩個 framework
AddressBook.framework 是用來擷取 AddressBook 資料用的
AddressBookUI.framework 是用來建立 AddressBook 的 UI 用的
建立 UI 的時候需要 ABPeoplePickerNavigationControllerDelegate、ABPersonViewControllerDelegate 這兩個 Delegate
這些 Delegate 的 Method 都是必定建立的,所以都要打入 .m 檔中

之後就來教要如何建立第一個 AddressBook 的 UI 了
這邊是使用 ABPeoplePickerNavigationController
我是用一個按鈕呼叫 add 這個方法
所以就在那邊建立這個介面

這個 Method 回傳 Yes 時就可以進入聯絡人的詳細資料
回傳 No 時會維持現在這個畫面
因為我要切換到 ABPersonViewController 這個介面
所以就回傳 No
其中 setDisplayedProperties 是設定我要顯示的聯絡人詳細資訊的內容
因為我只要電話的資訊而已,所以限定顯示電話資訊就好了
這樣子不會讓使用者不知道要點哪個地方
setDisplayedProperties 的詳細設定可以自行去查察看,我就不提供了

這個 Method 回傳 Yes 時就可以執行聯絡人資料中的動作
點到電話時就是播出電話,點到 Mail 時就是寫 Mail 給他
回傳 No 時會維持現在這個畫面
因為我不會進入這個畫面,所以回傳什麼都沒關係

這個 Method 是做進入 ABPeoplePickerNavigationController 按下右上方的 Cancel 按鈕時的動作
當然通常按下 Cancel 的時候就是取消這個介面,回到上一個介面了

建立 ABPersonViewController 這個介面時我會用它的 Delegate
下面的 Method 就是屬於這個 Delegate 的
其實進入 ABPersonViewController 時會跟 ABPeoplePickerNavigationController 的第二層介面是一樣都是聯絡人的詳細資料
不過這邊能取得你點擊到的資訊,而不是這個聯絡人的全部資訊

我在模擬器裡面點移這個聯絡人的這隻電話
這時候 Log 就會顯示我點到的聯絡人姓名與電話資料了

沒有留言: