• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

即使被告知不要,iOS6 方向仍在旋转

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:54:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我的 iOS 应用程序似乎有问题。

它的部署目标是iOS5.0,但是我使用的是iOS 6.0 SDK。

在我的 View Controller 中,我有:

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationMaskPortrait;
}

-(BOOL)shouldAutorotateToInterfaceOrientationUIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

这在 iOS5 模拟器中运行时可以正常工作。 View 不会旋转到 LandScape 或倒置。

但是,在 IOS6 模拟器中(以及在设备上),它将继续旋转。

我使用 NSLog 来检查 -supportedInterfaceOrientations 确实被调用了,它确实被调用了两次,但它仍然旋转到 LandScape(右或左)

我做错了什么?

我还扩展了 UINavigationController(我的 Root View Controller )以包含以下内容:

@implementation UINavigationController (Rotation_IOS6)

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{    
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end

但还是没有成功。

编辑

根据马特的回答。我还需要使用与我的 UINavigationController 类似的实现来扩展 UITabBarController 并且这很有效。



Best Answer-推荐答案


问题可能是您有一个导航界面。你?如果是这样,您需要继承 UINavigationController 并使用该子类的实例作为导航 Controller 。在该子类中,that 是您实现 supportedInterfaceOrientations 的地方。对于任何父 View Controller (例如 UITabBarController)也是如此。

原因是 iOS 6 对旋转的思考方式与 iOS 5完全不同。你认为你从 iOS 5 知道的任何东西都不再适用。在 iOS 6 中,我们从应用程序本身的级别开始,然后通过应用程序委托(delegate)到 Root View Controller 或其他全屏 View Controller (例如呈现的 View Controller )和 stop . parent 不再咨询其子女。

此外,应用程序本身(通过 info.plist 或应用程序委托(delegate))必须列出应用程序的任何部分可以永远每个方向 假设; View Controller 只能请求其中的 子集

查看发行说明:

http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/_index.html

但是,请注意,这句话是谎言:

For compatibility, view controllers that still implement the shouldAutorotateToInterfaceOrientation: method do not get the new autorotation behaviors

相反,在 iOS 6 中,旧的自动旋转方法被完全忽略了;每个人都会得到新的自转行为。这不是“选择加入”。

关于即使被告知不要,iOS6 方向仍在旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755816/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap