0

ユーザーが名簿から連絡先をインポートしたり、自分で連絡先を提供したりできるアプリケーションを実装しています。https://github.com/soffes/sspersonviewcontrollerを使用してすべてを実装しました。新しい連絡先が名簿に追加され、すべてが本当にうまく機能します。ABPersonViewControllerなどを使用してすべてのフィールドと編集機能を使用しました...

しかし、クライアントは、連絡先を名簿に保存するのではなく、アプリケーションに保存する必要があり、インポートを除いて、ユーザーに名簿へのアクセスを許可するように要求してはならないことを主張します。

ABRecordRefのシリアライザーを使用して「アプリへの連絡先のインポート」を機能させました(https://github.com/nvrooij/Let-s-Share/blob/master/Classes/ABRecordSerializer.hから)

しかし、私の最大の問題は、ABNewPersonViewControllerとABPersonViewControllerがユーザーにアドレスブックへのアクセスを要求することです。

だから私が必要なもの:

  • アドレス帳にアクセスせずに連絡先を作成するためのビュー。ABRecordRefを人に返す必要があるので、どこかでシリアル化できます(atmはNSUserDefaultsに保存します)

  • アドレス帳にアクセスせずに連絡先を編集するためのビュー。

私がすでに試したこと:AddressBookに接続せずにABPersonViewControllerを使用する方法 に従って、displayedPersonを設定しましたが、「アクセス許可ポップアップ」は引き続き表示されます。

ABNewPersonViewControllerとABPersonViewControllerのドキュメントから、アドレスブックのゲッターをサブクラス化してオーバーライドし、すべての場合にnilを返すことが機能し、アドレスブックのないビューになってしまうという印象を受けました。しかし、どこかで(私はビュー自体を想定しています)、アドレスブックが再度作成され、この呼び出しを取り除くことができません。

どのように助けることができますか_

ABPersonViewControllerの再実装へのポインター(編集機能を含む)またはその他のヒントは大歓迎です。

すべての優れた機能(国の選択、フィールドの追加など)を備えたユーザービューコントローラーの作成方法に関するアイデアも大歓迎です。

私のアプローチが完全にオフだと思われる場合は、コメントもお願いします。私は常にさまざまな角度を探しており、この名簿全体の惨事を深く掘り下げた可能性があります。

連絡先を作成および編集するためのコントローラーがアドレスブックから完全に切り離され、アドレスブックにアクセスする代わりにABRecordRefが返されることを望みます。私の場合、それは私の仕事を非常に単純化するでしょう(人は夢を見ることができます)。

よろしくお願いします、iosGoblin

4

1 に答える 1

1

次のように問題を解決/回避しました。編集機能を削除し、ABNewPersonViewControllerに似たビューコントローラーを作成しました(名前、確実な名前、電話番号、住所などの特定のフィールドのみ)。入力からABRecordRefを作成します(http://www.modelmetrics.com/tomgersic/iphone-programming-adding-a-contact-to-the-iphone-address-book/の便利なコード)。ABRecordSerializerを使用してこの連絡先をNSUserDefaultsにシリアル化します(質問のリンク)

ユーザーが連絡先をインポートした場合、ABPeoplePickerNavigationControllerから取得した連絡先をNSUserDefaultsにシリアル化します。

連絡先がNSUserDefaultsに保存されている場合は、逆シリアル化して表示します。

要約:

  • ABNewPersonViewControllerの縮小バージョンを再実装しました
  • シリアライザー(上記のリンク)を使用して、連絡先をNSUserDefaultsに格納します(View Controllerから、またはインポートされたものから、シリアル化されたら、もう気にしません)
  • 連絡先を希望して表示します

よろしくお願いします、iosGoblin

于 2013-03-10T15:30:48.157 に答える