UIView coordinate transforms on rotation during keyboard appearance

Posted by SG on Stack Overflow See other posts from Stack Overflow or by SG
Published on 2010-05-06T01:41:10Z Indexed on 2010/05/06 1:48 UTC
Read the original article Hit count: 414

Filed under:
|

iPad app; I'm trying to resize my view when the keyboard appears. It amounts to calling this code at appropriate times:

 CGRect adjustedFrame = self.frame;
  adjustedFrame.size.height -= keyboardFrame.size.height;
 [self setFrame:adjustedFrame];

Using this technique for a view contained in a uisplitview-based app works in all 4 orientations, but I've since discovered that a vanilla uiview-based app does not work.

What happens is that apparently the uisplitview is smart enough to convert the coordinates of its subviews (their frame) such that the origin is in the "viewer's top left" regardless of the orientation. However, a uiview is not able to correctly report these coordinates. Though the origin is reported as (0,0) in all orientations, the view's effective origin is always as if the ipad were upright.

What is weird about this is that the view correctly rotates and draws, but it always originates in the literal device top left. How can I get the view to correctly make its origin the "top left" to the viewer, not the device's fixed top left? What am I missing? Please, for something so trivial I've spent about 6 hours on this already with every brute force technique and research angle I could think of.

This is the original source which doesn't work in this case:

http://stackoverflow.com/questions/1951826/move-up-uitoolbar

© Stack Overflow or respective owner

Related posts about uiview

Related posts about uiscrollview