2010-11-19 1 views
13

iPad用の新しいキーボードを作成したいと思います。iPadでuipopoverを中心に

ユーザーがキーを押したときにテキストボックスに入力するキーとすべての基本的な作業を持つビューを設計し、ユーザーが戻るボタンを押したときに値を呼び出し側ルーチンに戻します。

これはすべて正常に動作します。

今、このビューをポップオーバーとして作成します。

私は

(ポップアップし、却下された)完全な基本的な操作を持っている。しかし、今、私はいくつかの微調整の助けを必要とします。

は...ここに私の質問です )私はUIPopoverArrowDirectionAny選択せずに画面を中心としたポップオーバーウィンドウを作成するにはどうすればよいですか?

2)ポップオーバーウィンドウを確認し、私はXIBファイル(現在、それは

おかげ
トニー

答えて

57

「permittedArrowDirections」に0を渡す:

[popOverController presentPopoverFromRect:rect inView:view permittedArrowDirections:0 animated:YES]; 

をあなたの視野の中心に位置1x1の四角形を渡し、それを中央に:

CGRect rect = CGRectMake(viewWidth/2, viewHeight/2, 1, 1); 
[popOverController presentPopoverFromRect:rect inView:view permittedArrowDirections:0 animated:YES]; 

次に、あなたがしています中央の矢印フリーのポップオーバー。

矢印を削除すると、いつでも破損する可能性があります。彼らは理由のためにUIPopoverArrowDirectionNoneオプションを提供しなかった、彼らは0が渡される、またはデフォルトに何かに将来例外をスローすることを選ぶかもしれません。自己責任で使用してください。

+0

iOS 5.xで動作する –

+2

iPadをランドスケープモードで使用するには、CGRectMakeの幅と高さを切り替えて、中央に正しく配置する必要がありました。 – Alan

+1

iOS 7.0.xでも動作します。 –

0

のサイズを変更して、ウィンドウの右端のサイズ)の一部を削除するにしてそれを作成したサイズですUIPopoverControllerを使用している場合は、矢印が表示されます。ここにあなたの選択があります。あなたは何UIPopoverArrowDirectionNone

はXIBの大きさはありません見ることができるように

UIPopoverArrowDirectionAny 
UIPopoverArrowDirectionUp 
UIPopoverArrowDirectionDown 
UIPopoverArrowDirectionLeft 
UIPopoverArrowDirectionRight 

は、実装ファイルのあなたのviewDidLoadメソッドでは、次のように設定することができます。

self.contentSizeForViewInPopover = CGSizeMake(320.0, 360.0); 

ポップオーバーの任意の方法でサイズを設定できます。なし矢印でそれを提示する

+0

yeaですが、0をハードコードするとUIPopoverArrowDirectionNoneのようになります – user2387149

0

私はこの1つを作業が、アプローチを少し変更し、可能なストーリーボードのように多くのをやってみたかったしてきた:

1)/最大ストーリーボードでポップオーバーと非ダニの方向を選択します下/左/右矢印を取り除く。私も、私は背景色を変更するように、ポップオーバーセグエのコーナー半径が私のデザインと一致しなかったことがわかった私の場合は

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    UIStoryboardPopoverSegue* popover = (UIStoryboardPopoverSegue*)segue; 
    CGFloat horizontalInset = (self.view.frame.size.width - popover.popoverController.popoverContentSize.width)/(CGFloat)2.0; 
    CGFloat verticalInset = (self.view.frame.size.height - popover.popoverController.popoverContentSize.height)/(CGFloat)2.0; 
    popover.popoverController.popoverLayoutMargins = 
     UIEdgeInsetsMake(
      verticalInset, 
      horizontalInset, 
      verticalInset, 
      horizontalInset); 
} 

はセグエの準備をして、このような何かを行う画面オーバーライドでそれを中央に

popover.popoverController.backgroundColor = [UIColor clearColor]; 

2)セグエの宛先コントローラの属性「ポップオーバー」を見つけると「使用明示的なサイズを」ダニと希望のサイズを置く:つまり、それを整理上記ブロックにこれを追加するためにクリアしますpopoverモードで表示されます。

関連する問題