2009-07-14 5 views
1

私はポートレートモードで回転にデバイスを何かをしなければならないが、私は次のコードiphone/ipodでデバイスの向きを制御する方法は?

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    //[[[UIApplication sharedApplication]keyWindow]subviews removeFromSuperview ]; 
    // return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
    return YES; 
} 

を使用して、それはシミュレータ上で正常に動作したときに私は、デバイスにコードをインストールするために使用する場合、それが作りますデバイスが非常に敏感なので、私はちょっとデバイスの位置を変更すると、このコードを実行し、電話機の回転に表示されているIMに行くようになります 誰よりも私はどのように私はデバイスの感度私はちょうど私のコードが実行する必要がありますが、同じ位置で電話を振るだけで実行するよりも、位置で90 'の回転を完了するときにほしいと思うことを意味します。任意の助け

おかげ

Balrajバーマ

答えて

1

おそらく、方位情報をバッファリングしたいです。つまり、現在表示されている向きとは異なる方向のセンサから複数の表示を受信した後にのみ向きを変更します。

0

あなたが書いたことを理解してから、デバイスを回転させるとアプリケーションの感度が高すぎますか?なぜこれが理解できるのかは分かりません。含まれているコードは、アプリケーションがローテーションを受け入れる意思があると述べていますが、後でローテーションイベントをどのように処理するかは記述していません。

情報に基づいて、私は使用して、あなたのコード内にチェックを追加します(おそらく、回転イベントが処理されている)と、デバイスからの方向性を得ることを示唆していることができます。

ます
[[UIDevice currentDevice] orientation]; 

をデバイスの現在の方向を示すUIInterfaceOrientation列挙型を返します。

UIDeviceOrientationPortrait 
UIDeviceOrientationPortraitUpsideDown 
UIDeviceOrientationLandscapeLeft 
UIDeviceOrientationLandscapeRight 

これを使用して、向きを変更する必要があるかどうかを確認できます。 (注:これはiPhone OS 2.0である私は、OS 3.0は、よりなどの顔のアップ/ダウンを、嘘を含めたことを信じています。)

- (void) didRotate:(NSNotification *)notification 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

    if (orientation == UIDeviceOrientationLandscapeRight) 
    { 
     NSLog(@"Landscape Right!"); 
    } 
} 

あなたは向きがあまりにもすばやく情報をバッファリングすることもできます切り替わりことが判明した場合、新しい方向に切り替える前に比較できるいくつかのサンプルポイントを作成します。

関連する問題