0

iPad の ABPeoplePickerNavigationController (横向き) で、ユーザーが PeoplePicker の検索バーをクリックしてからキャンセルすると、キーボードが再起動されず、People Picker の UI がすべて台無しになる、非常に奇妙な UI バグが見られます。バグの写真は次のとおりです。

ここに画像の説明を入力

ABPeoplePickerNavigationController は、次のコードを使用してモーダル フォーム シートに表示されます。

- (void) openAddressBook
{
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
    picker.delegate = self;
    [picker setModalPresentationStyle: UIModalPresentationFormSheet];
    [self presentViewController:picker animated:YES completion: nil];
}

UI は、ユーザーが検索フィールドをタップしてキーボードを表示し、検索フィールドをキャンセルして、iPhone のようにキーボードを破棄しないまで、期待どおりです。また、ユーザーがこのモードで連絡先リストをスクロールすると、すべての文字ヘッダー (つまり、A ヘッダー) が、検索バーのすぐ下のビューの上部ではなく、A ヘッダーが現在ある場所に固定されます。

キーボードがここで辞任されていない理由はありますか?

ABPeoplePickerNavigationController はサブクラス化できないため、これをデバッグするのに苦労しています。

4

2 に答える 2

0

それがどのように機能するかUIModalPresentationFormSheetです: デフォルトでは、ファーストレスポンダーが辞任したときにキーボードを閉じません。明らかに ABPeoplePickerNavigationController は、このように使用されることを想定していません。私の提案:そうしないでください。ポップオーバーまたは通常の表示ビューを使用します。(私の経験では、ポップオーバーの方が見栄えが良いです。)

于 2014-04-25T18:01:31.533 に答える