ios shareApplication rootviewcontroller.frame触发器在Y轴上

时间:2012-05-03 23:26:21

标签: ios uiapplication cgrect keywindow

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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