8

タイトル通り。[[UIDevice currentDevice] BeginGeneratingDeviceOrientationNotifications] を呼び出しても効果はありません。

DidRotateToInterfaceOrientation などのイベントは正常に機能していますが、デバイスの向きを任意にポーリングできるようにする必要があります。

どうすればこれを修正/実行できますか?

長い話: 各タブにナビゲーション コントローラーを備えたタブ アプリケーションがあります。タブ番号 1 のルート ビューは、方向が横向きに変わると全画面表示になるグラフです。ただし、方向の変更が他の場所で発生した可能性があるため、ビューが表示されるたびにこれを確認する必要があるため、このビューが表示されるたびに方向の状態をポーリングしたいと考えていました。

4

5 に答える 5

9

UIDevice の向きの概念は、実際のデバイスでのみ利用できるようです。ドキュメントが示唆するように通知が有効になっているかどうかに関係なく、シミュレーターは常にここで 0 を返すようです。イライラするほど不便ですが、そこまでです。

これは実際のデバイスでうまく機能することがわかりました:

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    NSLog(@"orientation: %d", [[UIDevice currentDevice] orientation]);
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
于 2010-08-14T18:50:21.230 に答える
2

ばかげた質問のようですが、そうではありませんか

beginGeneratingDeviceOrientationNotifications

( 小文字 b ) ...

于 2010-08-02T14:49:53.687 に答える
2

チェック[[UIDevice currentDevice] orientation]イン- (void)viewDidLoadすると、常にゼロになります。

- (void) viewDidAppear:(BOOL)* *アニメ化された方法とあなたでそれをチェックしてください

于 2012-11-12T09:49:31.320 に答える
1

これは、上記のコメントで iMeMyself が述べたとおりです。

UIDeviceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;

if (UIInterfaceOrientationIsLandscape(interfaceOrientation))
{
   //do stuff here
}
else if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
{
//or do stuff here
}
于 2013-08-13T02:29:55.990 に答える
0

[[UIDevice currentDevice] orientation] は現在の向きの状態を教えてくれませんか? これは、ポーリングするビュー コントローラーの viewWillAppear メソッドで確認できます。

編集: それ以外にも、UIApplication の statusBarOrientation プロパティや UIViewcontroller の interfaceOrientation プロパティを使用するなど、現在の向きを取得するさまざまな方法があります。

于 2010-05-22T00:33:14.240 に答える