OSDN Git Service

Improve detail view window size control.
authorHirami <tomohisa.hirami@nifty.com>
Sat, 31 Mar 2012 02:24:11 +0000 (11:24 +0900)
committerHirami <tomohisa.hirami@nifty.com>
Sat, 31 Mar 2012 02:24:11 +0000 (11:24 +0900)
FIX: On iPad landscape mode, resize is not work correctly.
FIX: When keyboard is changed, resize is not work correctly.

iOS/Tombo/Tombo/DetailViewController.m

index 78c5c6b..51d4b03 100644 (file)
 - (void)keyboardDidShow:(NSNotification*)notification {
     NSDictionary *info = [notification userInfo];
     
-    CGRect rect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
+    CGRect beginRect = [self.detailText convertRect:[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue] fromView:nil];
+    CGRect rect = [self.detailText convertRect:[[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue] fromView:nil];
     CGRect frame = self.detailText.frame;
-    frame.size.height -= rect.size.height;
+    
+    if (beginRect.size.height == rect.size.height) {
+        // slide in
+        frame.size.height -= rect.size.height;
+    } else {
+        // keyboard change
+        frame.size.height -= (rect.size.height - beginRect.size.height);
+    }
     self.detailText.frame = frame;
+
 }
 
 - (void)keyboardDidHide:(NSNotification*)notification {
+
     NSDictionary *info = [notification userInfo];
     
-    CGRect rect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
+    CGRect rect = [self.detailText convertRect:[[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue] fromView:nil];
     CGRect frame = self.detailText.frame;
+
     frame.size.height += rect.size.height;
     self.detailText.frame = frame;
 }