iOS5/6 中自动旋转?

2024-01-03

我更新到 Xcode 4.5 并正在使用 iOS6——这是一个我肯定会犯的错误not下次有更新时进行;对于刚接触 iOS 的人来说,这有点像噩梦——而且我刚刚注意到我正在开发的一个应用程序正在自动旋转。我在更新之前从未注意到它会自动旋转,但也有可能我在测试时没有旋转手机,所以我不能确定。我已将以下代码添加到主 UIViewController 并且它仍在旋转:

- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation
{
    return NO;
}

这是禁用自动旋转的正确方法吗?如果是的话,那么 iOS6 可能会有一些变化,我必须等到完整版本才能找到答案。但如果我弄错了,我应该使用什么代码呢?

一如既往地感谢您的帮助。

EDIT:这是我将其更改为的代码,但它仍在旋转。难道是我听错了?

- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationPortrait)
{
    return YES;
}
else 
{
    return NO;
}
}

那是因为从来没有成功过。您应该选择其中一个方向。

按住命令并单击 UIInterfaceOrientation 您将看到可能选项的枚举。

然后你可以针对这些进行测试来决定你的YES设想。

我最初可能误解了你的问题。看来您可能一直在说您的应用程序允许旋转。但代码应该不允许这样做。

我以为你是说它仍在触发代码。试图找到一个“是”

需要考虑的一件事。是否可能有多个可用的视图控制器。也许你的代码没有被击中。

有几个可能的问题。

  1. 您的代码甚至没有被使用。因为视图被分配为 UIViewController 而不是您的自定义视图控制器。

  2. 您的代码正在被使用,但视图控制器不是被询问方向的控制器。因此该特定代码不会被击中。

  3. 糟糕的构建会不断地将错误的组件放入设备上。

您的解决方案可以如下。

  1. 确保您的代码是被分配的代码。要么对您的自定义类进行直接分配。或者 xib 文件正在膨胀它。打开 xib 文件后,请检查 Identity Inspector。选择您的视图控制器并确保自定义类设置为您的类类型

  2. 看看层次结构。还有哪些其他视图控制器。也许其中之一告诉应用程序它可以自动旋转到任何方向。

  3. 找到“DerivedData”文件夹并将其完全删除。有时这是组织者的工作。其他时候你需要直接从磁盘上删除。然后清理并再次构建。

另外,另一种解决方案可以像在项目文件中设置设置一样简单。

从文件浏览器中选择您的项目文件,您将在摘要中看到 iPad 和 iPod 设置。您可以针对要禁止的方向“取消按下”按钮。以及您没有以其他方式编码方向的任何视图控制器。默认情况下将使用这些。

对于造成的混乱,我深表歉意。

Update

我通常使用此代码来处理我的自动旋转。

它不仅将 ipad 与其他 ios 设备区分开来,而且还将请求转发到所呈现的控制器上,以便以模态显示的视图可以按照其想要的方式做出响应。

当你不理解时,定位是一种痛苦:)

// Detect iPad
#define IS_IPAD() ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? \
[[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad : NO)

// Set preferred orientation for initial display
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    if (IS_IPAD()){
        return UIInterfaceOrientationLandscapeRight;
    }
    else {
        return UIInterfaceOrientationPortrait;
    }
}
// Return list of supported orientations.
- (NSUInteger)supportedInterfaceOrientations{
    if (self.presentedViewController != nil){
        return [self.presentedViewController supportedInterfaceOrientations];
    }
    else {
        if (IS_IPAD()){
            return UIInterfaceOrientationMaskLandscapeRight;
        }
        else {
            return UIInterfaceOrientationMaskAll;
        }
    }
}

// Determine iOS 6 Autorotation.
- (BOOL)shouldAutorotate{
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    // Return yes to allow the device to load initially.
    if (orientation == UIDeviceOrientationUnknown) return YES;
    // Pass iOS 6 Request for orientation on to iOS 5 code. (backwards compatible)
    BOOL result = [self shouldAutorotateToInterfaceOrientation:orientation];
    return result;
}
// handle iOS 5 Orientation as normal
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    // Return YES for supported orientations

    if (self.presentedViewController != nil){
        return [self.presentedViewController shouldAutorotate];
    }
    else {
        if (IS_IPAD()){
            return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
        }
        else {
            return (interfaceOrientation == UIInterfaceOrientationPortrait);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS5/6 中自动旋转? 的相关文章

随机推荐

  • 我的堆是否碎片化

    0 000 gt dumpheap stat total 1755874 objects Statistics MT Count TotalSize Class Name 7b9b0c64 1 12 System Windows Forms
  • 如何解决flywaydb中脚本的版本号冲突

    我有 3 个 git 分支 develop fixbug 和 master 分支master中最新的FlywayDB脚本版本是1 2 43 分支开发中的版本是1 2 54 Branch Fixbug的脚本版本更新至1 2 55 并且基于Br
  • 当用户选择文件夹时,Mac 沙盒应用程序可以访问什么?

    我正在阅读有关 Mac 应用程序沙箱的内容 并且想知道当用户在 NSOpenPanel 或 NSSavePanel 中选择文件夹时到底会发生什么 这 应用程序沙箱设计指南 http developer apple com library m
  • 在 Android 2 (API 5) 中模拟堆栈视图?

    我的应用程序必须有一个可以显示卡片的小部件 并且用户可以翻 cards StackWidget示例 在 Android 的资源中 有一个很好的小部件 但有一个StackView在小部件的布局中 它可以使用API Level 11我必须实现
  • 当对象属性不正确时 Wcf (400) 错误请求

    我有一个 Wcf 启用 ajax 服务 它接受方法调用的对象 我的 Wcf 方法如下所示 OperationContract XmlSerializerFormat WebInvoke Method POST UriTemplate XML
  • 构造函数 Service(URL, QName, WebServiceFeature[]) 未定义

    I got 构造函数 Service URL QName WebServiceFeature 是未定义错误在我为我的客户端 Web 服务运行 wsimport 后 我使用 JDK 1 6 请帮忙 在使用 wsimport 生成 JAX WS
  • 为什么 Socket.io 在 Safari 和 Chrome 上的连接速度很慢

    我是 Node js 和 Socket io 的真正新手 所以如果这是一个愚蠢的问题 请耐心等待 我在 Heroku 上设置了一个非常基本的虚拟对象来测试 Socket io 您所能做的就是单击一个按钮 所有连接的浏览器都会看到相应的消息
  • 提交 DataContext 更改时发生 Linq ChangeConflictException

    System Data Linq ChangeConflictException 2 of X updates failed at System Data Linq ChangeProcessor SubmitChanges Conflic
  • 如何在 Tumblr 上添加标签云?

    我已经使用 Tumblr 有一段时间了 但我不知道如何在博客上显示 Tumblr 标签云 我想问一下如何在我的Tumblr博客上显示标签云 第三方 JavaScript 解决方案 http rive rs projects tumblr t
  • 将单元格拆分为不同数量的单元格 - Excel

    如果回答了类似的问题 我们深表歉意 我进行了搜索 但找不到我要找的东西 我有一个电子表格 在其中复制并粘贴了有关各种类型啤酒的大量数据 我想将包含文本的字符串单个单元格拆分为与啤酒类型和酒精百分比相对应的任意数量的单元格 我遇到的问题是 有
  • 每(x)个JAVA插入一个空格,使用正则表达式

    我想知道正则表达式是否可以做到这一点 或者我应该将其分成一个字符数组并执行循环 在他们输入的字符串中每隔 x 个字符 由用户指定 插入一个空格 例如 他们有字符串 oogabooga 他们首先想每 2 个字符插入一个空格 他们会得到 oo
  • 使用 Retrofit 将 JSON 属性简单自定义映射到对象属性

    在 RetroFit 中定义 JSON 属性到特定对象属性的自定义映射的最简单方法是什么 一组 奖励 的 JSON 响应示例 name 5 Voucher description Get 5 off your next purchase a
  • 授予 Kubernetes 服务帐户权限以从所有命名空间获取 pod

    我想授予 Kubernetes 服务帐户执行权限kubectl token token get pod all namespaces 我熟悉对单个名称空间执行此操作 但不知道如何对所有名称空间执行此操作 包括将来可能创建的新名称空间且无需授
  • vim表格插件问题

    Before stallone Factory user name gt Sylvester age gt 64 schwarzenegger Factory user name gt Arnold age gt 63 一些魔法 After
  • 如何在 ReSharper 中添加自定义代码分析

    我是 ReSharper 的新手 对于使用Resharper的人来说 有没有办法添加自定义代码分析规则 例如我可能有一条规则说所有私有变量都应以字母 m 开头 如何将其添加到 Resharper 以便如果我违反此规定 它可以显示为警告或错误
  • BFS 和 DFS 的区别

    我正在读关于DFS in 算法简介由科门 以下为正文 片段 与 BFS 不同 BFS 的前驱子图形成一棵树 DFS产生的subgrpah可能由几棵树组成 因为 可以从多个来源重复搜索 除上述注释外 还提到以下内容 BFS 仅限于一个源 这似
  • 只需要“最近”任务 - 取消/忽略的最佳实践?

    我有一个看起来像这样的任务 var task Task Factory StartNew LongMethod task ContinueWith TaskCallback TaskScheduler FromCurrentSynchron
  • 连接超时已过期。登录后阶段超时时间已过

    在我的应用程序中 查询工作正常 对于单个选择查询 我收到以下错误 System Data EntityException 底层提供程序在打开时失败 gt System Data SqlClient SqlException 连接超时已过期
  • 将 React-Redux 与 connect() 和 {...this.props} 一起使用

    当我想从其他组件调用容器中的操作时 我无法弄清楚如何制定正确的解决方案 顺便说一句 我想使用扩展运算符 因为我需要在组件中传递太多参数并且不想描述他们全部 我知道我可以通过 props 从 redux store 传递所有 props 就像
  • iOS5/6 中自动旋转?

    我更新到 Xcode 4 5 并正在使用 iOS6 这是一个我肯定会犯的错误not下次有更新时进行 对于刚接触 iOS 的人来说 这有点像噩梦 而且我刚刚注意到我正在开发的一个应用程序正在自动旋转 我在更新之前从未注意到它会自动旋转 但也有