4

ポップオーバー内に含まれるいくつかのフォームを持つアプリに取り組んでいます。私の問題は、テキスト入力フィールドをクリックしてキーボードが表示されると、ポップオーバーが画面の左上隅 (0,0) に縮小し、入力しているフィールドが表示されないことです。キーボードを隠すボタンをクリックすると、ポップオーバーは通常のサイズと位置に戻ります。

キーボードが表示されたときにポップオーバーのサイズ変更を防ぐ方法はありますか?

私の説明が不十分な場合のスクリーンショットを次に示します。

http://i.imgur.com/vHyJ5.jpg http://i.imgur.com/vtjCX.jpg

編集:ポップオーバーが画面に表示される方法のコードは次のとおりです。

(void)displayPopoverForOrientation:(UIInterfaceOrientation)orientation {
if ([Utilities getAppDelegate].menuPopover) {
    CGRect rect = CGRectMake(0, 0, 0, 0);
    if (orientation == UIInterfaceOrientationLandscapeLeft ||
        orientation == UIInterfaceOrientationLandscapeRight) {
        if (self.currentPopover == RESERVATIONS_POPOVER) {
            rect = CGRectMake(365, 0, 0, 0);
        } else if (self.currentPopover == ACCOUNT_POPOVER) {
            rect = CGRectMake(600, 0, 0, 0);
        } else if (self.currentPopover == RESORTS_POPOVER) {
            rect = CGRectMake(0, 0, 0, 0);
        }
    }

    [[Utilities getAppDelegate].menuPopover presentPopoverFromRect:rect
                                                            inView:self.view 
                                          permittedArrowDirections:UIPopoverArrowDirectionUp 
                                                          animated:YES];
}
}

ポップオーバー内には、xib でレイアウトが設定された別のビュー コントローラーがあります。ご不明な点がございましたら、お気軽にお問い合わせください。私は iOS と Objective C にはかなり慣れていませんが、コーディングは初めてではないので、明確にするために最善を尽くします。

編集 2: これは iOS 5 でのみ発生することがわかりました。古いバージョンの iOS では、キーボード用の十分なスペースができるまでポップオーバーが垂直方向に折りたたまれます。iOS 5 でこの動作が変更された理由について何か考えはありますか?

4

2 に答える 2

2

キーボードが表示されたときにポップオーバーの形状が変化するのを防ぐことはできません。AppleのUIPopoverControllerドキュメントによると:

指定するサイズは、ポップオーバーのビューに適したサイズです。ポップオーバーが画面に収まり、キーボードと衝突しないように、実際のサイズを変更することができます。

IOSはそれを邪魔にならないように動かそうとしますが、それをどこから提示しているかによっては、それが不可能な場合があります。最良の結果を得るには、バーボタンまたはスクロールビュー内から表示し(UITableViewは問題ありません)、ポップオーバーが大きくなりすぎないようにUIを設計します(ポップオーバーが画面の大部分を覆っている場合は、次のセグエを検討する必要があります。モーダルビューなど)。すべての場合に機能するソリューションを得る前に、レイアウトをよりよく理解できるように、いくつかの図を描く必要があることがわかりました。

于 2012-03-30T01:47:41.937 に答える
2

実際、それは非常に可能です!...これは、IB でデフォルトでチェックされている自動サイズ変更に関係しています。

これを別のフォーラムに同様の質問で投稿しました..私にとっての解決策は次のとおりです。

1) デザイナーに移動します。2) 問題の原因となっている XIB ViewController (つまり、PopOver のもの) を開きます。3) VIEW をクリックして選択します。4) 「AutoResizeSubviews」のチェックを外します。 5) コードで PopOver をロードするときは、次のことを確認してください。

これが役立つことを願っています。

よろしく ハイダー・サティ

于 2014-01-09T11:02:41.510 に答える