2012-05-03 15 views
0

소프트 키보드가 표시 될 때마다 응용 프로그램의 프레임을 "위로"움직이는 iPad 응용 프로그램이 있습니다.ios shareApplication rootviewcontroller.frame Y 축 플립 플롭

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

결정적인 요인 일부 장치에이 올바른 길을가는 것입니다 만, 다른 한편으로는 나는 그것을 원하는 것보다 반대 방향으로 이동합니다. 하드웨어 특유의 것 또는 소프트웨어 특유의 것조차 보이지 않습니다. 나는 4 개의 iPads (2 개의 ipad1, 2 개의 ipad3 및 하나의 ipad2)에서 모두 ios 5.1 (9B176)으로 시도했다. 이것이 내가 논리와 맞서기 위해 장치에서 일어날 것인지를 알 수있는 방법이 있습니까?

또한이 작업을 수행 할 장치에서도 마찬가지이며 그 반대의 경우도 마찬가지입니다. 일단 발생하면 소프트웨어 업데이트, 장치 재시작, 앱 제거 또는 IPA 대 x-x-xcode에 관계없이 항상 발생합니다.

답변

1

보기의 프레임을 설정하고 있지만 프레임 좌표는보기의 수퍼 뷰 (이 경우에는 keyWindow)와 관련이 있어야하며 자체가 아닙니다. 창이 회전하지 않으므로 장치의 현재 방향에 따라 프레임 좌표가 다르게 해석됩니다.

당신은 당신의 프레임이 keyWindow에 적합한 사람 좌표 변환 다음을 수행 할 수 :이 그것

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

하하입니다! 나는 IPAs를 내 친구에게 보내고 있는데 나는 그가하는 것보다 자신의 아이 패드를 다르게 잡아야 만한다. 아, 너무 단순하지만 내 마음은 한 가지 사고 방식으로 포장되었습니다. 당신의 도움을 주셔서 감사합니다! – Jacksonkr