2011-01-09 10 views
2

私のiPhoneアプリでは、ポートレートからランドスケープまで様々なビューをいくつか取り直しています。これは、ユーザーがポートレート - >風景 - >ポートレート - >風景を(私はいくつかの数学はビューを再配置するように)行う場合、正常に動作します。iPhone/iPadで180フリップを検出

しかし、ユーザーがPortait - > Portraitを逆さまにする、またはLandscape Left - > Landscape Rightを使用すると、コードが機能しません。

180フリップを検出して無視できますか?あなたが期待しているとそうでない場合は、あなたのロジックが出てこないだろう。..

fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight 

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
    if ((fromInterfaceOrientation == UIInterfaceOrientationPortrait) && 
     (UIDeviceOrientationIsPortrait(self.interfaceOrientation)) 
    { 
    } 
    else if ((fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
      (fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight) && 
      (UIDeviceOrientationIsLandscape(self.interfaceOrientation))) 
    { 
    } 
    else 
    { 
     // Do something - it didn't flip 180. 
    } 
} 
+0

これを無視することはできますが(@Jim Buck参照)、コードを正しく動作させないバグを修正する方が良いでしょう。おそらくちょっとしたことです。 – Eiko

+0

まあ私の数学は前の位置に基づいているので、前の位置が動かなければ数学をやりたくない...ジムのコードでも私の無視するコードはうまくいかない... – mootymoots

+0

ランドスケープチェックで、fromがLandscapeRightかLeftかを確認しています。肖像画では、あなたが肖像画の上下が見えないかどうかを確認していません。そしておそらく@Jim Buckが指摘したことに基づいて、あなたの括弧が正しく更新されていることを他の人が見ることができるようにあなたのコードを更新してください。 – lilbyrdie

答えて

2

あなたはあなたのロジックのこの部分の周りに括弧を持っている必要があります:私は、次の試してみました。 &&は、||より高い優先度を持ちます。

+0

ありがとうございます - しかし、コードはまだ180度フリップで最後のelseを呼び出します...? – mootymoots

+0

まあ、どんな状態が起こっていますか? 'from'方向が正しくないか、 'to'方向が間違っていますか? –

関連する問題