0

ソフトキーボードが表示されるたびにアプリケーションのフレームを「上」に移動するiPadアプリケーションがあります。

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

クリンチャーは、一部のデバイスではこれが正しい方向に進むことですが、他のデバイスでは、私が望む方向とは逆の方向に進みます。ハードウェア固有ではなく、ソフトウェア固有でもないようです。私は4台のiPad(2台のipad1、2台のipad3、1台のipad2)ですべてios 5.1(9B176)を使って試しました。ロジックでこれと戦うことができるように、これがデバイスで発生するかどうかを知る方法はありますか?

また、これを実行しようとしているデバイスはそれを実行し、その状態を維持しているようです(逆も同様です)。一度発生すると、ソフトウェアの更新、デバイスの再起動、アプリの削除、またはIPAとran-from-xcodeに関係なく、常に発生するかどうかは関係ありません。

4

1 に答える 1

1

ビューのフレームを設定していますが、フレーム座標はビュー自体ではなく、ビューのスーパービュー (この場合は keyWindow) に対して相対的である必要があります。ウィンドウは決して回転しないため、フレーム座標はデバイスの現在の向きに応じて異なる方法で解釈されます。

次のようにして、フレーム座標を keyWindow に適したものに変換できます。

CGRect newFrame = [self.view convertRect:CGRectMake(0, 150, 1024, 768) toView:[UIApplication sharedApplication].keyWindow];
[UIApplication sharedApplication].keyWindow.rootViewController.view.frame = newFrame;
于 2012-05-04T00:01:55.040 に答える