我有一个带有tabbar的应用程序,我想在其中检测界面方向。
我在info.plist中设置了支持的方向。 这是我的主要界面声明:
@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
...
}
这是MyAppDelegate的实现:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
return NO;
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
return YES;
if (interfaceOrientation == UIInterfaceOrientationPortrait)
return YES;
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
return NO;
}
并且在我试图检测方向变化的必要视图中,我称这些方法为:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
和
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
我已经在这些方法中设置了NSLog打印,但没有一个是注册任何更改。甚至没有在shouldAutorotateToInterfaceOrientation方法中。
任何人都可以帮助我吗?我做错了什么? 任何帮助将不胜感激。
答案 0 :(得分:5)
shouldAutorotateToInterfaceOrientation:
是您必须在视图控制器中实现的方法,而不是在您的应用委托中。要使标签栏应用程序旋转,标签栏控制器的所有子控件都必须返回YES
以获取所请求的界面方向。
同样,willRotateToInterfaceOrientation:
和didRotateFromInterfaceOrientation:
将在视图控制器中实现,而不是像您所说的那样在视图中实现。< / p>
答案 1 :(得分:1)
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
方法必须在viewController中实现,而不是在appdelegate
中实现