2012-01-25 12 views
3

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

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

私の説明が不十分な場合のスクリーンショットです。

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でこの動作が変更された理由についてのアイデアはありますか?

+1

コードが役に立ちます。あなたは画面上でポップオーバーをどのように提示していますか? –

+0

私はrectのいくつかの変換があるはずだと思います。あなたのビューは横向きの方向に変換されるからです。必要なメモリからコードを取得することはできません。 –

+0

' - (CGRect)convertRect(CGRect *)rect fromWindow:(UIWindow)window'あなたはポップオーバーを提示する前にこのメソッドのようなものが必要です。おもう。 –

答えて

2

キーボードが表示されているときにポップオーバーの形が変わるのを防ぐことはできません。アップルのUIPopoverController文書によると:

あなたが指定するサイズは、単にポップオーバーの表示に適したサイズです。実際のサイズは、ポップオーバーが画面に合い、キーボードと衝突しないように変更される場合があります。

IOSはそれを途中で移動しようとしますが、それを提示している場所によってはできない場合があります。最良の結果を得るには、バーボタンやスクロールビュー(UITableViewはOK)から提示し、ポップオーバーが大きすぎないようにUIを設計します(ポップオーバーがほとんどの画面をカバーする場合は、モーダルビューなど)。私はいくつかの図を描く必要があることを知ったので、すべてのケースでうまくいくソリューションを得る前にレイアウトをよりよく理解することができました。

2

実際に、それは非常に可能性がある...これは、自動サイズ変更IBではデフォルトでチェックされていると行うことです:!

私は...、同様の質問と別のフォーラムにするためのソリューションを投稿私は次のようになりました:

1)デザイナーに でアクセスしてください。2)問題の原因となっているXIB ViewController(つまりPopOver)を開きます。 3)クリックしてVIEWを選択します。 4) "AutoResizeSubviews"のチェックを外してください 5)PopOverをコードに読み込むときは、次のようにしてください: 6)Your_Popup_Window.popoverContentSize = Your_ViewController.view.bounds.size;

こちらがお役に立てば幸いです。

親切にお礼申し上げます。 ハイダーサティ

関連する問題