ios shareApplication rootviewcontroller.frame Y 轴触发器

标签 ios uiapplication cgrect keywindow

我有一个 iPad 应用程序,每次显示软键盘时,我都会将应用程序的框架“向上”移动。

[UIApplication sharedApplication].keyWindow.rootViewController.view.frame = CGRectMake(0, 150, 1024, 768);

最重要的是,在某些设备上,这是正确的方式,但在其他设备上,它的方向与我想要的相反方向。它似乎不特定于硬件,甚至不特定于软件。我已经在 4 台 iPad(两台 ipad1、两台 ipad3 和一台 ipad2)上尝试过,全部运行 ios 5.1 (9B176)。有没有办法知道这是否会在设备上发生,以便我可以用逻辑来解决这个问题?

此外,似乎要执行此操作的设备也会执行此操作并保持这种状态(反之亦然)。一旦发生,无论软件更新、设备重启、应用程序删除或 IPA 与 ran-from-xcode,它总会发生或不发生。

最佳答案

您正在设置 View 的框架 - 但框架坐标需要相对于 View 的 super View (在本例中为 keyWindow),而不是其本身。 由于窗口永远不会旋转,因此根据设备的当前方向,您的框架坐标将以不同的方式解释。

您可以执行以下操作将框架坐标转换为适合 keyWindow 的坐标:

CGRect newFrame = [self.view convertRect:CGRectMake(0, 150, 1024, 768) toView:[UIApplication sharedApplication].keyWindow];
[UIApplication sharedApplication].keyWindow.rootViewController.view.frame = newFrame;

关于ios shareApplication rootviewcontroller.frame Y 轴触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440727/

相关文章:

swift - 如何在 Swift 中从 UIApplication 中删除窗口

ios - 设置 keyWindow rootViewController 在 iOS8 中不起作用

ios - Swift iOS - 如何在单元格的 superView 中获取按钮框架

ios - 在自定义 UIView 的 updateConstraint 函数中获取帧大小

ios - 使用函数更新其他类中的标签

ios - 从 JSON 设置后立即释放模型属性

ios - 打开文档时管理 View 层次结构

objective-c - CGRectGetWidth 与 CGRect.size.width

ios - 什么使用 Passbook 的日志记录端点?

ios - 当超出 UITableViewCell 边界时, subview 会被修剪