2012-05-03 7 views
0

私は、のソフトキーボードが表示されるたびに、アプリケーションのフレームを「上に」動かしているiPadアプリケーションを持っています。ios shareApplication rootviewcontroller.frame Y軸のフリップフロップ

[UIApplication sharedApplication].keyWindow.rootViewController.view.frame = CGRectMake(0, 150, 1024, 768); 

決め手は、いくつかのデバイス上で、これは正しい道を行くということですが、私はそれがしたい以外の上では、反対方向に行きます。ハードウェア特有のものではなく、ソフトウェア特有のものでもないようです。私は4つのiPads(2つのipad1、2つのipad3と1つのipad2)ですべてをios 5.1(9B176)で試しました。これがデバイス上で起こるかどうかを知る方法はありますか?それで私はこれを論理と戦うことができますか?

また、これを行うデバイスはそれを行い、同様にそのままにしているようです(逆も同様です)。それが起こると、ソフトウェアのアップデート、デバイスの再起動、アプリの削除、IPAとx-in-xcodeの比較にかかわらず、常に起こります。

答えて

1

ビューのフレームを設定していますが、フレームの座標は、ビューのスーパービュー(この場合はkeyWindow)を基準にする必要があります。 ウィンドウが回転しないので、デバイスの現在の向きに応じて、フレーム座標の解釈が異なります。

あなたのフレームがkeyWindowに適したものに座標変換するには、次の行うことができます:

CGRect newFrame = [self.view convertRect:CGRectMake(0, 150, 1024, 768) toView:[UIApplication sharedApplication].keyWindow]; 
[UIApplication sharedApplication].keyWindow.rootViewController.view.frame = newFrame; 
+0

をハハ、これはそれです!私はIPAを私の友人に送ります、そして、私は彼とは違って自分のiPadを持っていなければなりません。ああ、シンプルだけど、私の心は一つの考え方に囲まれていた。ご協力いただきありがとうございます! – Jacksonkr