问题。我的应用程序中出现了一个非常奇怪的错误。我有一个UITabBarController,它有几个用于选项卡的视图控制器。在视图控制器中,我通过shouldAutorotateToInterfaceOrientation:
实现了自动旋转,并且在我做出以下更改之前一直正常工作。
我在视图控制器中实现了滑动手势,以便在标签之间进行更改。这可以通过以下代码完成。
- (void)onSwipeLeft {
int _count = [[self.tabBarController.tabBar items] count];
int i = self.view.tag - 1;
if (i < _count - 1) {
self.tabBarController.selectedIndex = (i + 1) % _count;
}
}
同样适用于onSwipeRight
。
现在,自动旋转仅适用于,直到您向左或向右滑动。之后,shouldAutorotateToInterfaceOrientation:
永远不会被调用。
另见。
在this thread中描述了相同的问题。我有时也会看到
如下所示的日志消息:-[UIWindow beginDisablingInterfaceAutorotation] overflow on <UIWindow: 0x1410e0; frame = (0 0; 320 480); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x141190>>. Ignoring.
我找不到任何其他相关信息。
This question似乎在描述同样的问题。
This question似乎在描述类似问题,但使用popViewController:
。请注意,自SDK 3.2以来,该错误一直存在。
怎么做?这似乎是SDK中的一个错误,它仍然存在于4.1中。有没有人找到解决方法?这似乎是一种常见的情况。
答案 0 :(得分:0)
创建UIWindow+ensureAutorotation.h
:
#import <UIKit/UIKit.h>
@interface UIWindow (ensureAutorotation)
- (void)beginDisablingInterfaceAutorotation;
- (void)endDisablingInterfaceAutorotation;
@end
UIWindow+ensureAutorotation.m
:
#import "UIWindow+ensureAutorotation.h"
@implementation UIWindow (ensureAutorotation)
- (void)beginDisablingInterfaceAutorotation {}
- (void)endDisablingInterfaceAutorotation{}
@end
// of course this can be added as a simple category, rather than .h .m files