2009-06-24 12 views
6

アラートビューを少し上に移動しているので、キーボードも画面に合わせることができます。私はちょうどフレーム変数を合法にするように警告を表示した後、警告のフレームをつかみ、Yを変更することでこれを行います。これはシミュレータ上で正常に動作しますが、ハードウェアでこれを行うと、アラートは正しい位置から開始しますが、ほぼ直ちに元の垂直中央の場所にジャンプします。 UIAlertViewの位置は、ユーザビリティのガイドラインごとに変更されていない固定されたものか、私はちょうど間違って何かをしていますか?UIAlertViewを移動できますか?

ありがとうございます!

答えて

22

あなたはこれに対してどのようなOSを使用していますか? X変換、変換既存の、そしてyは変換:

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
         delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ]; 

alert.transform = CGAffineTransformTranslate(alert.transform, 0.0, 100.0); 

[ alert show ]; 

CGAffineTransformTranslateは3つの引数を取ります:私は、これはOS 3.0シミュレータおよびOS 3.0デバイスの両方で動作するようになりました。使用した例では、アラートビューは通常よりも100ピクセル高く表示されていました。これを試して、何が起こるか見てみましょう。

また、デフォルトでは、initのアラートのフレームを設定する可能性があるため、アラートを表示する前にフレームを変更することができます。

+0

トランスフォームがトリックをしましたが、何らかの理由でフレーム座標を使用して移動することが問題でした。 – Skyler

+0

それはios 3.0でも私のために働いていましたが、何らかの理由でiOS 4.0ではうまくいきませんでした.... –

1

アラートはmodalではありません - つまり、アラートがアクティブな間に他のユーザー入力を一般的には実行しませんか?これが当てはまる場合、なぜキーボードの可視性が必要なのでしょうか?

+3

アラートビューのサブビューとしてテキストフィールドが追加されている場合、アプリをダウンロードする前にiTunesパスワードの入力を求められたときと同じように、キーボードを見たいと思うのは理にかなっています。 – LucasTizma

+0

コメントをいただきありがとうございます - 私はそのシナリオを考えていませんでした。 – teabot

2

UIAlertViewsの周りを移動するiOS4がトリッキーになるためです。あなたがUIAlertViewにUITextFieldのサブビューを追加すると、iOS4では警告が上に移動してキーボードが重なっていないことに気付きました。これは発生しません< iOS4。

また、showが呼び出された後もアラートのフレームが初期化されていないことに気付きました。したがって、相対的なCGAffineTransformationを行うプログラム的な方法は簡単ではありません。唯一の解決策は、OSのバージョンに基づいて条件付き変換を行うことです。

これは、いつでも変更される可能性のあるUIAlertViewsの文書化されていない振る舞いのように見えます。私はAppleがテキストやボタン以外のもの(たとえ自分のアプリケーションがこのルールを破っているにもかかわらず)のためにアラートを使用することを意味しているとは思わない。

このタイプのシナリオでは、自分のカスタムアラートを作成します。

関連する問題