0

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

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

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

此外,似乎打算这样做的设备也会这样做并保持这种状态(反之亦然)。一旦发生,无论软件更新、设备重启、应用程序删除或 IPA 与从 xcode 运行的情况如何,它总是会发生或不发生。

4

1 回答 1

1

您正在设置视图的框架 - 但框架坐标需要相对于视图的超级视图(在本例中为 keyWindow),而不是自身。由于窗口从不旋转,因此您的框架坐标将被不同地解释,具体取决于设备的当前方向。

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

CGRect newFrame = [self.view convertRect:CGRectMake(0, 150, 1024, 768) toView:[UIApplication sharedApplication].keyWindow];
[UIApplication sharedApplication].keyWindow.rootViewController.view.frame = newFrame;
于 2012-05-04T00:01:55.040 回答