iPad 模态视图控制器即使在横向模式下也能以纵向方式运行

2023-12-02

我在横向模式下呈现 ModalViewController 时遇到一些困难。基本上,它以正确的界面方向显示,并且仅当设备处于横向模式时才旋转,但视图控制器的行为就像处于纵向模式一样。

我正在像这样呈现模式

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];

    LoginViewController *lvc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:[NSBundle mainBundle]];
    [self.window.rootViewController presentModalViewController:lvc animated:NO];

    return YES;
}

在登录视图控制器中

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    NSLog(@"%@",NSStringFromCGRect(self.view.frame));
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}    

几次轮换后的日志结果:

2012-03-06 13:51:49.308 OrientationTest[3132:207] {{0, 0}, {1024, 748}}
2012-03-06 13:51:49.310 OrientationTest[3132:207] {{0, 0}, {1024, 748}}
2012-03-06 13:51:49.310 OrientationTest[3132:207] {{0, 0}, {1024, 748}}
2012-03-06 13:51:49.310 OrientationTest[3132:207] {{0, 0}, {1024, 748}}
2012-03-06 13:51:49.313 OrientationTest[3132:207] {{0, 20}, {1024, 748}}
2012-03-06 13:51:49.314 OrientationTest[3132:207] {{0, 0}, {748, 1024}}
2012-03-06 13:51:49.315 OrientationTest[3132:207] {{20, 0}, {748, 1024}}
2012-03-06 13:51:50.991 OrientationTest[3132:207] {{20, 0}, {748, 1024}}
2012-03-06 13:51:50.991 OrientationTest[3132:207] {{20, 0}, {748, 1024}}
2012-03-06 13:51:51.647 OrientationTest[3132:207] {{20, 0}, {748, 1024}}
2012-03-06 13:51:51.648 OrientationTest[3132:207] {{0, 0}, {748, 1024}}
2012-03-06 13:51:53.481 OrientationTest[3132:207] {{0, 0}, {748, 1024}}
2012-03-06 13:51:53.482 OrientationTest[3132:207] {{0, 0}, {748, 1024}}
2012-03-06 13:51:53.897 OrientationTest[3132:207] {{0, 0}, {748, 1024}}
2012-03-06 13:51:53.898 OrientationTest[3132:207] {{20, 0}, {748, 1024}}

基本上,loginViewController 的行为就像处于纵向模式一样。我在此视图上有两个文本字段,当我点击其中之一时,我想向上移动视图,以便键盘不会显示在文本字段上。为了做到这一点,我必须修改frame.origin.x而不是y,因为轴是反转的(视图的行为就像肖像),这导致了很多问题。

Edit :

如果我将 LoginViewController 上的模式呈现样式更改为 UIModalPresentationPageSheet ,它会按预期工作,因此仅全屏模式会出现一些问题

第二次编辑:

我已将代码简化为基础内容。我什至不再提供模式视图控制器,只是将该视图控制器初始化为根视图控制器,但这种情况仍然发生。

应用程序委托:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

在我的视图控制器中:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    NSLog(@"%@",NSStringFromCGRect( self.view.frame));
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

好的,所以我终于找到了一种让它正常工作的方法。看起来如果您只是创建一个新的视图控制器并呈现它总是会被反转。我发现的修复是将视图控制器放入导航控制器中。

LoginViewController *lvc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:[NSBundle mainBundle]];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:lvc];
nvc.navigationBarHidden = YES;
lvc.modalPresentationStyle = UIModalPresentationFullScreen;
lvc.parentView = self.navController.view;
[self.window.rootViewController presentModalViewController:nvc animated:NO];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPad 模态视图控制器即使在横向模式下也能以纵向方式运行 的相关文章

随机推荐

  • 在 IE7 中使用 Prawn 生成 Rails PDF

    我正在使用 Prawn 和 Prawnto 在 Ruby on Rails 应用程序 Rails 版本 2 2 2 中生成 PDF 该应用程序运行良好 可以愉快地生成 PDF 并将其发送给用户以在 Firefox 中下载 问题出在IE7上
  • 使用 PHP 在 Windows 中获取文件所有者

    在 Windows 上提供文件路径并获取其所有者用户名 当然 fileowner在这里是没用的 有什么 PECL 扩展可以提供帮助吗 编辑 也可以使用的替代方案 从 DOC 文件中读取摘要数据 以检索作者 编辑2 使用找到了解决方案COM
  • 在中心找不到工件 javax.sql:jdbc-stdext:jar:2.0 (https://repo.maven.apache.org/maven2)

    我正在尝试构建为我的项目创建的 Web 服务的 REST API 我的网络服务运行没有问题 现在 我想在远程服务器上部署我的服务 并且我需要生成war file 我使用 Java Eclipse 和 Maven 作为依赖项 我试着做一个全新
  • 如何使“%bp.hap.run-until name = X86_HLT_Instr”工作?

    从命令行模拟执行二进制文件 建议使用 bp hap run until name X86 HLT Instr 这是我的完整脚本 run command file targets qsp x86 firststeps no network s
  • 在android中解析11MB的大json[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我在使用 GSON 和 J
  • wakeLock 不等待网络连接

    我使用唤醒锁作为警报来定期更新应用程序状态 三星手机上的 WiFi 需要一段时间才能连接 还有 Wifi 上的 保持唤醒 选项does not在三星手机上工作 他们也没有兴趣解决这个问题 因此 当唤醒锁确实发生时 它应该等待 wifi 连接
  • 为什么maven依赖中的版本号有时会被跳过?

    我对 Maven 的功能还很陌生 我发现在 pom xml 中放置依赖项的地方 有时只提到 groupID 和artifact id 而跳过 version 为什么是这样 例如以下依赖项来自 springsource 网站http spri
  • 在 Sympy 中部分分解表达式

    Suppose I have an expression of the form I know that I can simplify the expression like so However sympy simplify and sy
  • iBooks图书馆般的效果

    谁能告诉我如何实现 iBooks Library 翻页效果 不是翻页 也许可以通过核心动画来实现吗 这就是您搜索的内容 它的代码非常少 并且完全在 CoreAnimation 中完成 https github com devindoty i
  • cx_Freeze:导入错误:没有名为“PyQt5.Qt”的模块

    我正在尝试使用构建我的 GUI 应用程序cx Freeze The setup py如下 from cx Freeze import setup Executable import os import sys base None if sy
  • PHP Preg_match 精确匹配单词

    我已存储为 1 7 11 我需要使用 preg match 来检查 7 有没有或 11 有吗等等 我该怎么做 Use b在表达式之前和之后仅将其作为整个单词进行匹配 str1 foo bar has matches foo bar str2
  • Elasticsearch 自定义分析器,带有 ngram,连字符上没有单词分隔符

    我正在尝试索引包含连字符但不包含空格 句点或任何其他标点符号的字符串 我不想根据连字符分割单词 而是希望连字符成为索引文本的一部分 例如 我的 6 个文本字符串是 杂志播放 马杂志 在线杂志 最佳杂志 杂志之友 杂志玩游戏 我希望能够在这些
  • 体系结构arm64的未定义符号:“_OBJC_CLASS_$_PayTabCardReaderViewController”,引用自:ViewController.o中的objc-class-ref

    导入名为 pay tabs 的库时出现这个奇怪的错误 Undefined symbols for architecture arm64 OBJC CLASS PayTabCardReaderViewController referenced
  • D3.js 中的线分割

    我在 D3 中创建了一条连接各个数据点的线 作为音乐可视化项目的一部分 但是 我需要对不同的线段进行不同的着色 我通过创建多行而不是使用 line 生成器 即每段一行 来做到这一点 但是我丢失了我的最想要的这样插值 注意 描边颜色不仅在开始
  • 从名称实例化类?

    想象一下我有一堆与 C 相关的类 都扩展相同的基类并提供相同的构造函数 这些类是我在公共头文件 我包含的 中声明的 以及它们在其他一些文件中的实现 我静态编译和链接的 作为我的程序构建的一部分 我希望能够实例化其中一个并传递名称 该名称是必
  • 在 R 中使用 print() 打印换行符

    我正在尝试在 R 中打印多行消息 例如 print File not supplied nUsage program F filename quote 0 我得到输出 File not supplied nUsage program F f
  • Magento-如何使用模块在产品详细信息页面中添加新的自定义块

    我正在做一个 magento 定制网站 我需要添加产品的附加属性 如类型 版本等 我是 magento 的新手 如何将新的定制块添加到产品详细信息页面 我创建了一个模块 并且正在使用下面的编码 应用程序 代码 本地 SmartGrowth
  • DateFormatter 那是不是很挑剔?

    有谁知道 Java 中的 DateFormatter 不是那么挑剔吗 我的意思是我可以提供多种格式来写入日期 如果我提供如下格式 yyyy MM dd HH mm ss Z 用户可以输入 2010 11 02 10 46 05 0600 o
  • Swift 4 可通过未知动态键进行解码

    我有以下 JSON DynamicKey 6410 Meta name page DynamicKey 在编译时是未知的 我正在尝试查找如何进行的参考 使用可解码解析此结构 public struct MyStruct Decodable
  • iPad 模态视图控制器即使在横向模式下也能以纵向方式运行

    我在横向模式下呈现 ModalViewController 时遇到一些困难 基本上 它以正确的界面方向显示 并且仅当设备处于横向模式时才旋转 但视图控制器的行为就像处于纵向模式一样 我正在像这样呈现模式 BOOL application U