0

私のアプリの設計では、UIViews が回転に対応している必要があります。

私のアプリが起動すると、UIApplicationWillChangeStatusBarOrientationNotification.

ただし、最初の回転 (いずれかの向きからいずれかの向き) では、通知は受信されません。

後続のローテーション イベントごとに、予想されるUIApplicationWillChangeStatusBarOrientationNotification通知が生成されます。

UIDeviceOrientationDidChangeNotification以下のコードがデバイスの向きをチェックするように変更された場合、通知にも同じことが当てはまります- 結果は同じです。

コード: (myUIView init)

// set up to listen for rotation
  [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(didRotate)
                                                name:UIApplicationDidChangeStatusBarOrientationNotification
                                             object:nil];

(回転時の myUIView)

-(void)didRotate
{

if ([self landscape])  // rotated TO landscape
    {
    // do landscape stuff
    }
}

(myUIViewで回転チェック)

// answer the question: are we landscape?  Yes or no.  No indicates portrait.                                             
-(BOOL)landscape
{
  UIInterfaceOrientation iOrientation = [UIApplication sharedApplication].statusBarOrientation;  

// Just get a displayable string version
  NSString* iOrientationString ;
  switch (iOrientation) {
    case UIInterfaceOrientationPortrait : iOrientationString = @"UIInterfaceOrientationPortrait" ; break ;
    case UIInterfaceOrientationPortraitUpsideDown : iOrientationString = @"UIInterfaceOrientationPortraitUpsideDown" ; break ;
    case UIInterfaceOrientationLandscapeLeft:iOrientationString = @"UIInterfaceOrientationLandscapeLeft" ; break ;
    case UIInterfaceOrientationLandscapeRight:iOrientationString = @"UIInterfaceOrientationLandscapeRight " ; break ;
  }
  NSLog(@"%@=%@" , @S(iOrientation ) , iOrientationString ) ;



    return UIInterfaceOrientationIsLandscape(iOrientation);
}

では、最初の回転とすべてが正しく呼び出されUIViewControllerていることに注意してください。-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

しかし、回転を意識したビューが欲しいです。欠落している最初のイベントの説明や回避策はありますか?

4

1 に答える 1

0

結局、私はもっと「普通」に行きましたか?で使用-(void)didRotateFromInterfaceOrientationUIViewController、回転対応をあきらめましたUIView

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

于 2013-09-25T23:07:40.183 に答える