【发布时间】:2011-03-13 23:23:23
【问题描述】:
我有一个 splitView 应用程序,它有一个 rootViewController 和 DetailsViewController 当应用程序加载 detailsViewController 时,会弹出一个包含 UINavigationBar 的 Modal viewController。
UINavigationBar 上有一个搜索栏(以编程方式设置)。当焦点被带到搜索栏时,键盘会弹出。
但是,根据设备(模拟器)的方向,键盘会以错误的方向弹出。键盘总是显示为好像 ipad 处于“正常”方向(即在 home 键所在的一侧)
我在所有 shouldAutoRotate 方法中都返回 YES:
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation;
为了尝试找出发生了什么,我向每个类添加了一些调试代码,以在每次触发 shouldAutorotate 事件时记录interfaceOrientation,同时还显示模式viewDidLoad 方法何时触发。我对每个方向都做了测试:调试输出如下所示。
调试显示,无论实际设备方向如何,rootViewController 和 DetailsViewController 界面方向始终为 Portrait。
唯一正确的日志(其中界面方向 = 设备方向)是在每个测试中触发模式 shouldAutorotate 事件的第一次和最后一次(第三次)。
如果我在应用启动后旋转 iPad,那么键盘会以正确的方向显示。
谁能解释为什么会发生这种情况以及如何避免它?
[肖像]
主页按钮位置:底部
键盘出现:底部调试:
APP DELEGATE - 添加 SPLITVIEWCONTROLLER
DETAIL-界面头像
ROOT接口纵向
ROOT接口纵向
DETAIL-界面头像
MODAL-界面纵向
模态加载
模态旋转启动
模态旋转端
MODAL-Interface Portrait[风景]
主页按钮位置:左
键盘出现:左调试:
APP DELEGATE - 添加 SPLITVIEWCONTROLLER
DETAIL-界面头像
ROOT接口纵向
ROOT接口纵向
DETAIL-界面头像
MODAL-界面景观
模态加载
模态旋转启动
模态旋转端
MODAL-界面纵向
MODAL-Interface LANDSCAPE[肖像]
主页按钮位置:顶部
键盘出现:top调试:
APP DELEGATE - 添加 SPLITVIEWCONTROLLER
DETAIL-界面头像
ROOT接口纵向
ROOT接口纵向
DETAIL-界面头像
MODAL-界面纵向
模态加载
模态旋转启动
模态旋转端
MODAL-界面纵向
MODAL-Interface Portrait[风景]
主页按钮位置:右
键盘出现:右调试:
APP DELEGATE - 添加 SPLITVIEWCONTROLLER
DETAIL-界面头像
ROOT接口纵向
ROOT接口纵向
DETAIL-界面头像
MODAL-界面景观
模态加载
模态旋转启动
模态旋转端
MODAL-界面纵向
MODAL-界面景观
【问题讨论】:
标签: objective-c cocoa-touch xcode ipad