我很确定我所看到的是这应该如何起作用,但我只是好奇为什么。当我在模拟器中旋转iPhone时,每次旋转都会调用允许方向的方法(见下文)。是否有一个原因?
-(BOOL)shouldAutorotateToInterfaceOrientation:interfaceOrientation
这是当iPhone检测到旋转时调用的内容,我只是好奇每次在模拟器中执行旋转时NSLog语句打印两次(即该方法被调用两次)
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
BOOL autoRotate = NO;
switch(interfaceOrientation) {
case UIInterfaceOrientationPortrait:
NSLog(@"Orientation(%d): Portrait Supported", interfaceOrientation);
autoRotate = YES;
break;
case UIInterfaceOrientationPortraitUpsideDown:
NSLog(@"Orientation(%d): UpsideDown unsupported", interfaceOrientation);
autoRotate = NO;
break;
case UIInterfaceOrientationLandscapeLeft:
NSLog(@"Device: RIGHT, Interface: LEFT(%d)", interfaceOrientation);
autoRotate = YES;
break;
case UIInterfaceOrientationLandscapeRight:
NSLog(@"Device: LEFT, Interface: RIGHT(%d)", interfaceOrientation);
autoRotate = YES;
break;
}
return(autoRotate);
}
加里
答案 0 :(得分:1)
您是否检查了传递给shouldAutorotateToInterfaceOrientation:
的参数?我发现它被称为一个用于水平,一个用于垂直 - 基本上要求哪个方向可以,然后它通常不再被调用。
如果你在那里做某事你想在每次旋转设备时都这样做,我认为使用willRotateToInterfaceOrientation:duration:
或者听取轮换通知(通过UIDeviceOrientationDidChangeNotification
)要好得多,并且离开shouldAutorotateToInterfaceOrientation:
以标记您的应用允许旋转该视图控制器的内容。
答案 1 :(得分:0)
当视图位于选项卡控制器内时会发生这种情况,因为选项卡控制器也会调用相同的方法。希望有所帮助。
-Oscar