makeKeyAndVisible更改视图的方向iOS 5

makeKeyAndVisible更改视图的方向iOS 5,ios,objective-c,ios5,uiviewcontroller,appdelegate,Ios,Objective C,Ios5,Uiviewcontroller,Appdelegate,在方法应用程序中:使用AppDelegate中的选项完成启动我启动一个视图控制器并添加到导航视图控制器中,该控制器将成为窗口根视图控制器。 因为我的iPad应用程序只是水平方向,所以我所有的视图控制器都是为横向设计的 代码如下: self.myViewController = [[MyViewController alloc] init]; self.myNavigationController = [[MyNavigationController alloc] initWithRootView

在方法应用程序中:使用AppDelegate中的选项完成启动我启动一个视图控制器并添加到导航视图控制器中,该控制器将成为窗口根视图控制器。 因为我的iPad应用程序只是水平方向,所以我所有的视图控制器都是为横向设计的

代码如下:

self.myViewController = [[MyViewController alloc] init];
self.myNavigationController = [[MyNavigationController alloc] initWithRootViewController: self.myViewController];
self.window.rootViewController = self.myNavigationController;
[self.window makeKeyAndVisible];

return YES;
当我将断点放在“self.window.rootViewController=self.myNavigationController;”行上并调用控制台以显示视图详细信息时,我得到以下结果: $0=0x0c89d010>

我读到的rect是方向模式(1024宽748高)

“return YES;”上的下一个断点显示: $1=0x0c89d010>

它复制一个对象(据我所见)并改变方向(768宽和1004高)

这只发生在iOS5中,而iOS6的工作方式与预期相同

MakeKeyAndVisible方法有什么我应该知道的已知问题吗?
或者可能是我不了解makeKeyAndVisible是如何工作的

尝试创建一个带有所有方向方法的自定义UINavigationController,并在应用程序中使用它

应该是这样的

CustomNavigationController.h

#import <UIKit/UIKit.h>
@interface CustomNavigationController : UINavigationController
@end

这样,您的方向将在相应的ViewCotroller中相应地工作。

您是否正在为iOS5实施方向方法?这与
makeKeyAndVisible无关
-处理方向的方式在iOS 5和iOS 6I之间发生了更改我正在实施的shouldAutorotateToInterfaceOrientation:方法在我的视图控制器,以确保它是横向的。您需要实现自定义NavigationController,使用navigationcontroller时,您的所有定向方法都会受到干扰。您能否显示
shouldAutoRotateToInterfaceOrientation:
的实现,以及是否调用了此方法?这可能看起来有点过度。这就是我在使用navigationcontroller时解决应用程序中定向问题的方法。这是有一段时间我和它混在一起了,但我认为
UINavigationController
默认使用viewController的
应该自动旋转指针FaceOrientation:
无论如何,因为viewController是通过navigationcontroller推送的,这样方向不会正常工作,但实现自定义导航控制器会让viewcontroller的方向方法无法正常工作。我已经实现了自定义导航控制器:MyNavigationController,并且方向设置为横向
#import "CustomNavigationController.h"


@interface CustomNavigationController ()

@end

@implementation CustomNavigationController


//overriding shouldAutorotateToInterfaceOrientation method for working in navController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return   [self.topViewController shouldAutorotateToInterfaceOrientation];

}

//other methods