iPad后退按钮停止旋转

时间:2011-06-20 10:40:02

标签: iphone objective-c ipad ios4

我正在开发iphone / ipad应用程序。

问题是当我将ipad肖像的方向更改为横向时,导航控制器的后退按钮停止工作。

当方向没有改变时,它的工作正常。

我正在使用此代码

 - (BOOL) isPad{    
 #ifdef UI_USER_INTERFACE_IDIOM
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
 #else
    return NO;
 #endif
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if ([self isPad]) {
    return YES;
}
else 
{
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

}

这段代码有什么问题?

2 个答案:

答案 0 :(得分:1)

这将有效:

-(void)viewWillAppear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

}

-(void)viewWillDisappear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
}  

现在实现以下方法:

-(void)checkOrientation
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationLandscapeLeft||orientation==UIDeviceOrientationLandscapeRight)
{

    // Set x coorinate of views you want to change

}
else
{

    // Set x coordinates of views to initial x xoordinates.

}

}  

创建recievedRotate:

- (void)receivedRotate:(NSNotification *)notification
{    
[self checkOrientation];
}  

在viewDidLoad中:

-(void)viewDidLoad
{  
// Code    
[self checkOrientation];
}

答案 1 :(得分:0)

我的猜测是你的按钮超出了视图的框架,因此不会接收到触摸事件。我认为您的应用重定向方向更改的方式有问题。