iPhone定位问题

时间:2010-01-04 09:34:46

标签: iphone objective-c

向下有我的代码在iPhone旋转时被调用。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
switch (interfaceOrientation) {
    case UIInterfaceOrientationPortrait:
                    // some action
        return YES;
    case UIInterfaceOrientationLandscapeLeft: {
                    // some action
        return NO;
    }
    case UIInterfaceOrientationLandscapeRight: {
                    // some action
        return NO;
    }
    default:
        return NO;
        break;
}

}

我认为这已经足够了,但后来我发现了,

case UIInterfaceOrientationPortrait:
永远不会打电话给

。 我能做什么?我必须使用默认值吗?也许它不是最好的解决方案,或者它是?

3 个答案:

答案 0 :(得分:2)

确定。我找到了答案。旋转手机时会收到通知。

    [[NSNotificationCenter defaultCenter] addObserver: self
                                         selector:@selector(receivedRotate:)
                                             name:UIDeviceOrientationDidChangeNotification
                                           object: nil];

- (void)receivedRotate:(NSNotification*)notif {
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
switch (interfaceOrientation) {
    case UIInterfaceOrientationPortrait: {
        break;
    }
    case UIInterfaceOrientationLandscapeLeft: {
        break;
    }
    case UIInterfaceOrientationLandscapeRight: {
        break;
    }
    default:
        break;
}   

}

使用它;)

答案 1 :(得分:0)

如果您只是想使用纵向方向,这应该足够了。

你在哪里覆盖这个功能?它应该在最顶层的视图控制器中。

答案 2 :(得分:0)

我刚刚将您的代码提供给示例应用程序,并且它的工作正常,使用给定的代码,当我将方向更改为横向时,视图中的任何内容都没有发生任何事情。一种方法是为每个方向单独设计视图,并对所有方向返回YES并使用以下属性

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation) 
    interfaceOrientation duration:(NSTimeInterval)duration { 
    if (interfaceOrientation == UIInterfaceOrientationPortrait 
        || interfaceOrientation == 
            UIInterfaceOrientationPortraitUpsideDown) { 
       //design your portrait view eg: for button, button.frame = CGRectMake(x,y,w,h)
    } 
    else { 
        //design for the landscape
    } 
}