视图控制器未收到 -shouldAutorotateToInterfaceOrientation:第二次加载时的消息?

2024-01-21

我有一个UIViewController我用它来控制“弹出”视图,以便在整个应用程序中查看图像。它支持自动旋转,因为无论方向如何,它都会自动调整图像大小以正确适合。这工作得很好,但只是在我第一次初始化并显示视图控制器时。当它关闭时,我将删除UIView从我的视图层次结构中释放视图控制器 - 但下次我实例化并将其添加到我的视图层次结构中时,它会停止接收-shouldAutorotateToInterfaceOrientation旋转手机时发送消息。

这就是我实例化和显示它的方式:

popupVC = [[PopupVC alloc] init];
[popupVC viewWillAppear:NO];
[[[UIApplication sharedApplication] keyWindow] addSubview:popupVC.view];
[popupVC viewDidAppear:NO];

这就是我在完成后删除/释放它的方式:

[popupVC viewWillDisappear:NO];
[popupVC.view removeFromSuperview];
[popupVC viewDidDisappear:NO];
[popupVC release];
popupVC = nil;

我尝试过循环[[UIApplication sharedApplication] keyWindow]子视图以查看我的弹出视图是否不在顶部,但它总是在顶部。而且它每次都有不同的地址,所以我确实知道它是视图控制器类的不同实例。

根据要求,这里是完整的loadView方法来自PopupVC:

- (void)loadView {

    UIView *myView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
    myView.backgroundColor = self.overlayColor;
    myView.autoresizesSubviews = NO;
    myView.hidden = YES;
    myView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.view = myView;
    [myView release];

    _isVisible = NO;

    UIView *myMaskView = [[UIView alloc] initWithFrame:self.view.bounds];
    myMaskView.backgroundColor = [UIColor clearColor];
    myMaskView.clipsToBounds = YES;
    myMaskView.hidden = YES;
    myMaskView.autoresizesSubviews = NO;
    myMaskView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:myMaskView];
    self.imageMaskView = myMaskView;
    [myMaskView release];

    UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
    myImageView.center = self.view.center;
    myImageView.hidden = NO;
    myImageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleHeight;
    [self.imageMaskView addSubview:myImageView];
    self.imageView = myImageView;
    [myImageView release];

    UIButton *myImageButton = [UIButton buttonWithType:UIButtonTypeCustom];
    myImageButton.frame = self.view.frame;
    myImageButton.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleHeight;
    [myImageButton addTarget:self action:@selector(clickImage:) forControlEvents:UIControlEventTouchUpInside];
    [self.imageMaskView addSubview:myImageButton];
    self.imageButton = myImageButton;

    UIActivityIndicatorView *myActivityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    myActivityView.hidden = YES;
    [self.view addSubview:myActivityView];
    myActivityView.center = self.view.center;
    self.activityView = myActivityView;
    [myActivityView release];
}

The shouldAutorotateToInterfaceOrientationhandler 不是自定义代码响应旋转事件的地方。它的目的只是告诉操作系统您的视图控制器可以旋转。如果您想要自定义代码来处理旋转事件,您应该覆盖 -didRotateFromInterfaceOrientation或其他类似的回调方法之一,具体取决于您的需要:

  • willRotateToInterfaceOrientation:duration:
  • willAnimateRotationToInterfaceOrientation:duration:
  • didRotateFromInterfaceOrientation:
  • willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:
  • didAnimateFirstHalfOfRotationToInterfaceOrientation:
  • willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:

See 自动旋转视图 http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/AutorotatingViews/AutorotatingViews.html#//apple_ref/doc/uid/TP40007457-CH11-SW1在开发人员文档中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视图控制器未收到 -shouldAutorotateToInterfaceOrientation:第二次加载时的消息? 的相关文章

  • ABPeoplePickerNavigationController - 在不使用私有方法/属性的情况下删除“取消”按钮?

    我正在使用 ABPeoplePickerNavigationController 它是 UINavigationController 的子类 在我使用它的上下文中 右侧的默认导航栏按钮 取消 没有任何意义 我找不到禁用或隐藏它的方法 并且无
  • 在后台轮询服务器的正确方法

    假设这是可能的 我希望我的 iOS 应用程序在后台时轮询服务器 即基本上每 30 分钟检索一次 URL 的内容 并通知用户是否包含 有趣 的内容 基本上以类似的方式如果您不使用推送通知 则内置邮件客户端假定的工作方式 现在 从我到目前为止的
  • iPhone - 如何通过基于度数的位置获取方向

    首先 我在班级中实现了位置管理器功能 并且运行良好 并为我提供了当前位置 从那个位置我得到了如何获得位置度here http www switchonthecode com tutorials getting your location i
  • 如何获取原始触摸屏数据?

    我知道我可以在 iPhone 应用程序中获取触摸事件 但这些触摸事件都被我过滤掉了 如果我将设备按在脸上 它会过滤掉这些触摸事件 因为它可以检测到它不是手指 我如何获得原始触摸事件 而不以任何方式过滤 没有用于此目的的公共 API 您可以获
  • UISearchBar 取消按钮没有响应

    我已经实现了搜索栏 一旦用户将焦点放在搜索栏中 它就会显示取消按钮 为此我写了searchBar showsCancelButton YES in my searchBarTextDidBeginEditing方法 在searchBarSe
  • 按钮操作在 iPhone 中不起作用?

    我有一个 iPhone 应用程序 我在其中添加一个自定义视图 尽管有一个导航栏视图 在正常情况下 我隐藏该自定义视图 并在需要时取消隐藏它 现在 我正在向该自定义视图添加一个具有操作的按钮 但是当我点击它时 没有任何操作起作用 任何人都可以
  • MPMediaItemPropertyAssetURL 仅针对 iPhone 5s 返回 null

    我一直在使用以下代码从 MPMediaItemPickerController 返回的 MPMediaItem 对象中提取资产 url 以便我可以将音乐文件从用户 iPhone itunes 音乐库复制到文档文件夹进行处理 但在 iPhon
  • 如何在松开按钮后立即看到新的视频层?

    我有一个应用程序 用户可以按住按钮来拍摄视频 然而 当他们这样做时 带有视频播放的新图层不会立即出现 相反 有一个非常短的延迟 在用户松开按钮后 您可以看到相机仍然显示相机所看到的内容 延迟结束后 视频立即显示并开始播放 但是 我怎样才能使
  • iPhone OS:从匿名对象获取方法和变量列表

    我正在构建我的第一个 iPhone Obj c 应用程序 并且我有大量的数据保存子类 我将它们传递给引用函数 对于 cite 函数 这些对象是匿名的 我需要找到一种方法来访问每个传递对象的所有变量 我一直在使用预构建的 NSArray 和选
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • 如何在 UIAlertView (iOS) 中的其他两个按钮(堆叠)之间添加取消按钮

    我正在尝试创建一个带有三个按钮 将堆叠 的 UIAlertView 我希望 取消 按钮位于其他两个按钮之间的中间 我尝试将 cancelButtonIndex 设置为 1 但如果还有其他两个按钮 它只会将它们放置在索引 0 和 1 处 我知
  • iPhone - 创建自定义 UITableViewCell 顶部和底部边框

    我一直在到处寻找 但还没有找到我的答案 我使用 JSON 中的动态单元格填充 UITableView 并尝试隐藏任何额外的单元格 我关闭了IB中的分隔符 当然所有的单元格分隔符都消失了 如何在每个 tableviewcell 的底部和顶部添
  • iPhone 上的双精度与浮动

    我刚刚听说 iPhone 本身无法进行双倍操作 从而使它们比常规浮动慢得多 这是真的 证据 我对这个问题很感兴趣 因为我的程序需要高精度计算 而且我将不得不在速度上妥协 iPhone 可以在硬件中执行单精度和双精度算术 在 1176 原始
  • 错误域=kAFAssistantErrorDomain 代码=209“(空)”

    我面临着一个问题SFSpeechRecognizer 启动应用程序几秒钟后 我开始收到错误消息 错误域 kAFAssistantErrorDomain 代码 209 空 和 错误 域 kAFAssistantErrorDomain 代码 2
  • Objective-C UILabel 作为超链接

    我正在尝试做一个UILabel一个链接UIWebView 我怎样才能做一个UILabel作为超链接 您可以使用 UITapGestureRecognizer 它将实现与您想要的类似的功能 UILabel myLabel UILabel al
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 将 NSData 转换回音频文件

    我已经转换了我的 caf音频文件到NSData使用以下代码行对象 NSData audioData NSData dataWithContentsOfFile MyRecorderFilePathURL path options 0 err
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 在 appdelegate 中呈现多个模态视图

    我想在应用程序收到 application UIApplication application didReceiveRemoteNotification NSDictionary userInfo 中的每个推送消息后呈现一个 modalvi

随机推荐

  • 如何为下一个子例程保留该变量的值?

    我是一名初级程序员 没有经验 正在为我现在正在做的工作学习 Visual Basic 我读了一天左右 终于决定开始制作所需的程序了 但是 我遇到了一些问题 现在我有两个子程序 第一个子例程让用户输入他们有多少个数据对 以便我可以创建一个表供
  • clojure类型转换字符串到符号

    在 clojure 中我有向量 myfn1 myfn2 myfn3 我如何使用该向量中的字符串调用名为 myfn1 的函数 调用绑定到 Var 的函数myfn1给定字符串 myfn1 你可以这样做 resolve symbol myfn1
  • Spring security/hibernate:即使它们是正确的,凭证也不好?

    嘿 我的基于 springsecurity 的登录有点混乱 我不断收到错误 凭据错误 这是我的用户表 用户表 1 这是我的 applicationContext 中的数据源
  • 如何在 PowerShell 中解析来自 Invoke-WebRequest 的 JSON?

    当向服务器发送 GET 请求时 使用自签名证书 add type using System Net using System Security Cryptography X509Certificates public class Trust
  • Docker 远程 API 是否有等效的“docker run --rm ...”?

    我希望能够在容器退出后轻松清理它们 这可以通过远程 API 实现吗 除了我自己发现出口并使用 DELETE containers 端点删除 拉斯克斯的答案现在已经过时了 Docker 远程 API 1 25shifted rm从客户端到服务
  • 如何使用 python 或(和)ruby 卸载任何应用程序

    我没有通过这个问题在网上找到任何有用的主题 这些都是关于如何卸载 python 或卸载 ruby 但没有关于 TOPIC 的信息 主要问题是我使用了其他有趣的answers https stackoverflow com questions
  • GDI泄漏问题

    我注意到使用任务管理器 以下代码中存在 GDI 泄漏 每次执行此代码时 执行此代码的进程中 GDI 对象的计数都会增加 1 但我似乎找不到问题 任何帮助 将不胜感激 create new DC based on current HDC hD
  • 如何让网页高度适合屏幕高度

    我需要使我的网页高度适合屏幕尺寸的高度而不滚动 HTML
  • 使用 R ggplot2 和 ggplotly 在地图上一年的累积点

    我正在尝试在地图上累计绘制每个月打开的新位置 我可以每月创建一个包含新位置的动画 但不能累积 换句话说 我希望看到新地点添加到现有地点 这是示例数据 DF lt data frame latitude c 42 29813 41 83280
  • 从 WooCommerce 购物车错误消息中删除库存数量

    在 WooCommerce 中 我将 woocommerce gt settings gt products gt inventory gt stock display format 设置为 永远不要显示剩余库存数量 但是 如果客户将产品广
  • 将 Numpy 数组保存为图像(说明)

    我在之前的帖子中找到了答案 将 Numpy 数组保存为图像 https stackoverflow com questions 902761 saving a numpy array as an image 唯一的问题是 没有太多关于使用
  • 在 Python/Bash 中通过 SSH/Sudo 测试文件/目录是否存在 [重复]

    这个问题在这里已经有答案了 我正在远程服务器上安装证书 并想在覆盖它们之前检查它们是否存在 服务器仅允许通过 ssh 公钥进行非 root 访问 我可以sudo s在 shell 中 root 一次 需要 root 权限 因为其他人无法读取
  • Play 框架模板自动导入模型。_ 除其他外

    似乎在 Play 框架模板中 有一个隐式的 import models 和 import play api data Form 因为我的代码 title String myForm Form User 无需在第一行后放置显式导入语句即可工作
  • ASP运行在64位环境下,使用Access数据库

    我有一位客户自 2003 年以来一直在运行一个使用 asp 3 0 构建的简单网站 其中包含一个 access 数据库文件 mdb 最近 该客户购买了一台带有 Windows 2003 Server 64 位的新服务器 该网站不再运行 显示
  • WMI 调用获取驱动程序

    我是 WMI 的新手 它是什么 例如 我可以在 C 中使用 WMI 调用来获取我的 PC 上的驱动程序列表吗 如果是这样 我该打电话给哪个班级 要列出已安装的驱动程序 您可以使用Win32 PnPSignedDriver http msdn
  • Python 中的球形 k 均值实现

    我一直在使用scipy 的 k 均值 http docs scipy org doc scipy reference cluster vq html已经有一段时间了 我对它在可用性和效率方面的工作方式感到非常满意 然而 现在我想探索不同的
  • C# 5.0 异步中的可等待和等待者

    Task 或Task 对象是可等待的 因此我们可以对返回值为Task 或Task 的对象使用await 键 Task 或 Task 是最常用的可等待对象 我们还可以定义自己的可等待对象 该对象应该具有以下资格 它有一个 GetAwaiter
  • 绑定字符串格式

    我有一组要显示的文本块 并且我需要每个文本块的文本以不同的方式显示 我当前正在标记属性中保存格式字符串 并且需要以此格式显示文本 如何绑定 StringFormat 部分 类似于下面的部分
  • Web容器无法从docker compose调用后端容器

    我仍在码头工人的世界中找到自己的立足点 我正在尝试将我的小宠物项目 Docker 化 前端是一个 vue cli 应用程序 它与包含 spring boot 制作的 Restful API 的后端进行通信 所以我的方法是为后端和前端声明两个
  • 视图控制器未收到 -shouldAutorotateToInterfaceOrientation:第二次加载时的消息?

    我有一个UIViewController我用它来控制 弹出 视图 以便在整个应用程序中查看图像 它支持自动旋转 因为无论方向如何 它都会自动调整图像大小以正确适合 这工作得很好 但只是在我第一次初始化并显示视图控制器时 当它关闭时 我将删除