0

我的应用程序设计要求 UIViews 能够感知旋转。

当我的应用程序启动时,它会收到一个UIApplicationWillChangeStatusBarOrientationNotification.

然而,然后,在第一次旋转时(从任一方向到任一方向)都不会收到通知。

每个后续的轮换事件都会生成预期的UIApplicationWillChangeStatusBarOrientationNotification通知。

这同样适用于UIDeviceOrientationDidChangeNotification通知,当更改下面的代码以进行设备方向检查时 - 结果是相同的。

代码:(myUIView 初始化)

// 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)didRotateFromInterfaceOrientation在 中使用UIViewController并放弃了旋转感知UIView

感谢所有的帮助。

于 2013-09-25T23:07:40.183 回答