首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPad键盘出现方向错误

iPad键盘出现方向错误
EN

Stack Overflow用户
提问于 2010-07-09 16:18:05
回答 2查看 3.3K关注 0票数 4

我有一个splitView应用程序,它有一个rootViewController和DetailsViewController,当应用程序加载detailsViewController时,会弹出包含UINavigationBar的Modal viewController。

UINavigationBar上有一个搜索栏(通过编程设置)。当焦点被带到搜索栏时,键盘会弹出。

然而,取决于设备(模拟器)的方向,键盘会弹出错误的方向。键盘总是显示得好像ipad处于“正常”方向(即在主键位于的一侧)。

我将在所有方法中返回YES:

代码语言:javascript
运行
复制
  - (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation;

为了了解发生了什么,我向每个类添加了一些调试代码,以便在每次触发interfaceOrientation事件时记录shouldAutorotate,同时也显示模式viewDidLoad方法何时启动。我对每个方向进行了测试:调试输出如下所示。

调试表明,无论实际设备方向如何,rootViewController和DetailsViewController接口方向都是肖像

唯一正确的日志(其中接口定向=设备定向)是每次测试中触发模态shouldAutorotate事件的第一次和最后一次(第三次)。

如果我在应用程序启动后旋转iPad,那么键盘就会出现在正确的方向上。

有谁能解释一下为什么会发生这种情况,以及如何避免呢?

肖像

家庭按钮位置:底部

键盘显示:底部

调试:

APP委托-添加人的

细节-界面画像

根界面画像

根界面画像

细节-界面画像

模态-界面图

模态载荷

模态旋转启动

模态旋转端

模态-界面人像景观

家庭按钮位置:左

键盘出现:左调试:

APP委托-添加人的

细节-界面画像

根界面画像

根界面画像

细节-界面画像

模态-界面景观

模态载荷

模态旋转启动

模态旋转端

模态-界面图

模态-界面景观肖像家庭按钮位置:顶部

出现键盘:顶部调试:

APP委托-添加人的

细节-界面画像

根界面画像

根界面画像

细节-界面画像

模态-界面图

模态载荷

模态旋转启动

模态旋转端

模态-界面图

模态-界面人像景观

家庭按钮位置:右

出现键盘:右调试:

APP委托-添加人的

细节-界面画像

根界面画像

根界面画像

细节-界面画像

模态-界面景观

模态载荷

模态旋转启动

模态旋转端

模态-界面图

模态-界面景观

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 23:02:53

在呈现模态视图控制器之前,您需要让iOS处理旋转事件。

下面是正在发生的事情:

该应用程序在设备的方向上是launched.

  • Based,屏幕旋转事件排队等待现有视图controllers.

  • Before屏幕旋转出现,您的新视图控制器是从视图controller.

  • The屏幕旋转事件处理的现有方向创建的。

  • 您的新视图控制器使用错误的orientation.

动画。

这基本上是一个UIKit种族条件。其中一些细节是猜测,但效果是显而易见的。

幸运的是,这是非常容易修复的

与其直接创建新视图,不如将其安排在主队列上处理。它将在当前事件被分派之后完成,其中包括旋转事件。

当前:

代码语言:javascript
运行
复制
[self presentModalViewController:newViewController animated:YES];

固定:

代码语言:javascript
运行
复制
dispatch_async(dispatch_get_main_queue(), ^{
    [self presentModalViewController:newViewController animated:YES];
});

使用这个新代码,您可以得到以下序列:

该应用程序在设备的方向上是launched.

  • Based,屏幕旋转事件排队等待现有视图controllers.

  • Before屏幕旋转出现,创建新视图控制器的代码排队,但不是executed.

  • The屏幕旋转事件是handled.

  • Your,新视图控制器是用正确的方向创建的,controller.

  • Your新视图控制器使用正确的orientation.

动画。

票数 4
EN

Stack Overflow用户

发布于 2010-07-09 19:08:15

你有没有把你所支持的方向加入到夹板里?

请参见:

http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/CoreApplication/CoreApplication.html#//apple_ref/doc/uid/TP40009370-CH6-SW9

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3214548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档