iPhone,硬件旋转后复制方法消息?

时间:2010-01-28 15:10:40

标签: iphone cocoa-touch

我很确定我所看到的是这应该如何起作用,但我只是好奇为什么。当我在模拟器中旋转iPhone时,每次旋转都会调用允许方向的方法(见下文)。是否有一个原因?

-(BOOL)shouldAutorotateToInterfaceOrientation:interfaceOrientation

EDIT_001

这是当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);
}

加里

2 个答案:

答案 0 :(得分:1)

您是否检查了传递给shouldAutorotateToInterfaceOrientation:的参数?我发现它被称为一个用于水平,一个用于垂直 - 基本上要求哪个方向可以,然后它通常不再被调用。

如果你在那里做某事你想在每次旋转设备时都这样做,我认为使用willRotateToInterfaceOrientation:duration:或者听取轮换通知(通过UIDeviceOrientationDidChangeNotification)要好得多,并且离开shouldAutorotateToInterfaceOrientation:以标记您的应用允许旋转该视图控制器的内容。

答案 1 :(得分:0)

当视图位于选项卡控制器内时会发生这种情况,因为选项卡控制器也会调用相同的方法。希望有所帮助。

-Oscar