2

概要: 縦向きビューの右側にあるボタンが、横向きに回転してからもう一度縦向きに戻した後に機能しないという奇妙なエラーが発生します。

詳細: 問題が発生するシナリオは次のとおりです。ポートレートで開始すると、すべてのボタンが機能します。私は横向きに回転し(以下のコードを参照)、すべてのボタンが機能します。縦向きに戻すと、画面の右 1/4 のボタンが反応しません。これらのボタンを覆う透明なビューがあるようです。奇妙なのは、ボタンの一部がその目に見えないバリアの左側に突き出ている場合、ボタンのその部分をタップできるが、「カバー」の「下」にある右側の部分をタップできないことです。この時点で横向きに回転すると、横向きのすべてのボタンが機能します。縦向きに戻すと、その見えない「カバー」が左にさらに 1/4 移動し、画面の約 1/2 をカバーします。再び横向きに回転すると (すべてのボタンは常に横向きで機能します)、縦向きに戻ると、目に見えない「カバー」がさらに 1/4 移動して、画面の 3/4 をカバーしています。最終的に、私のコントロールはどれも縦向きに反応しません。

重要なプロジェクト情報:

  1. このアプリはユニバーサルです。この問題は、iPad の縦向きモードでのみ発生します。iPhone バージョンでは、ポートレート (またはランドスケープ) モードでこの問題が発生することはありません。
  2. ビューは、コンテナー ビュー (ルート)、縦向きビュー、横向きビューの 3 つだけです。
  3. このアプリは ARC で、6.1 を対象としています。回転イベントを処理するためのすべての正しいメソッドがあります。

ビューを回転させるコードは次のとおりです。

[portrait removeFromSuperview];
[landscape removeFromSuperview];

UIDeviceOrientation currentOrientation = [[UIDevice currentDevice] orientation];
if (currentOrientation==UIDeviceOrientationUnknown) {
    currentOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation];
}
if ((currentOrientation == 0) || (UIInterfaceOrientationIsPortrait(currentOrientation))) {
    [[self view] addSubview:portrait];
}
else {   //landscape
    [[self view] addSubview:landscape];
}

私が試したこと

  1. 私が見つけた質問は、Instruments を使用したメモリ リークのチェックについて言及されているように聞こえます。ゾンビと割り当てのテンプレートを試してみましたが、何もおかしなことはありませんでした (Instruments を使用したのはこれが初めてですが)。
  2. 編集:これはすべてシミュレーターにあります。デバイスでこの問題をまだテストしていません。

ご協力いただきありがとうございます。

4

2 に答える 2

0

ポートレイトとランドスケープのフレームを適切に設定していないと思います。つまり、回転させると、他のコンポーネントのフレームがボタンフレームと重なり、ユーザーの操作が無効になります

于 2013-07-26T05:04:29.560 に答える