【发布时间】:2012-12-16 14:56:03
【问题描述】:
在我的视图控制器中,我实现了两种控制界面方向的方法:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate
{
return YES;
}
在supportedInterfaceOrientations方法中,我返回UIInterfaceOrientationMaskPortrait,但当时我意识到shouldAutorotate方法没有被调用。
但我在supportedInterfaceOrientations 方法中更改为return UIInterfaceOrientationPortrait。正在调用shouldAutorotate 方法,但出现以下错误:
UIApplicationInvalidInterfaceOrientation, reason: '支持的方向与应用程序没有共同的方向,并且 shouldAutorotate 返回 YES'
顺便说一下,我在支持的界面方向中选择了所有方向。
已编辑
我使用 viewController 并嵌入了 navigationController。 这里是 AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate,UINavigationControllerDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (readonly, strong, nonatomic) UINavigationController *navController;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
@end
在 AppDelegate.m 下的 didFinishLaunchingWithOptions 方法中
navController = (UINavigationController *)self.window.rootViewController;
IPad_HomeViewController *rootVC=(IPad_HomeViewController *)navController.topViewController;
rootVC.managedObjectContext = self.managedObjectContext;
return YES;
在我的 iPad_HomeViewController 中,
@interface IPad_HomeViewController : UIViewController <UINavigationControllerDelegate>
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@end
【问题讨论】:
-
我不认为代码只需要改变它的方向,你可以在菜单 Targets->Summary-> Supported Device Orientations 中执行此操作并更改如下。
-
@Programmer... 如果特定屏幕支持与更广泛的应用程序不同的方向,您必须在代码中执行此操作。
-
检查我对 ios 6 和 pre ios 6 示例代码的回答。希望对您有所帮助。
-
您的应用委托看起来不错。尝试在所有视图控制器中将 autorotate 设置为 yes,然后设置所需的旋转。看看这是否有效。我实际上构建了一个演示单视图项目并测试了代码。它工作正常。
-
我在 shouldAutorotate 方法中返回 Yes 并在 supportInterfaceOrientations 方法中设置 UIInterfaceOrientationMaskPortrait。但是 shouldAutorotate 没有被调用并且错误仍然存在。顺便说一句,我也有 ios5 的 shouldAutorotateToInterfaceOrientation 方法。如果可能的话,你能把你的示例代码发给我吗?真的谢谢。
标签: objective-c ios cocoa-touch orientation