Как сделать так, чтобы текстовое представление отображалось, а клавиатура не скрывала текстовое представление, пока оно находится в альбомной ориентации.
Используя UICatalog, я создал TextViewController, который работает. В нем есть два способа вызова клавиатуры и проверки того, что textView расположен над клавиатурой. он просто отлично работает в портретном режиме.
У меня работает ландшафтный режим, но текстовое представление все еще помещается в верхнюю часть iPhone для компенсации клавиатуры в портретном режиме.
Я изменил способы отображения клавиатуры.
Ниже приведен код для этих методов: (Я просто позволю увидеть код для шоу, поскольку код скрытия будет обратным.
- (void)keyboardWillShow:(NSNotification *)aNotification
{
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationPortrait) {
// the keyboard is showing so resize the table's height
CGRect keyboardRect = [[[aNotification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
NSTimeInterval animationDuration = [[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect frame = self.view.frame;
frame.size.height -= keyboardRect.size.height;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
self.view.frame = frame;
[UIView commitAnimations];
} else if (orientation == UIInterfaceOrientationLandscapeLeft) {
NSLog(@"Left"); // Verijderen later
CGRect keyboardRect = [[[aNotification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
NSTimeInterval animationDuration = [[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect frame = self.view.frame;
frame.size.width -= keyboardRect.size.height;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
self.view.frame = frame;
[UIView commitAnimations];
} else if (orientation == UIInterfaceOrientationLandscapeRight){
NSLog(@"Right"); // verwijderen later.
CGRect keyboardRect = [[[aNotification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
NSTimeInterval animationDuration = [[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect frame = self.view.frame;
frame.size.width -= keyboardRect.size.width;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
self.view.frame = frame;
[UIView commitAnimations];
}
}
Я знаю, что мне нужно изменить строку frame.size.height -= keyboardRect.size.height
, но мне кажется, что она не работает.
Я пытался frame.size.width -= keyboardRect.size.height
, который не работал. Потеря клавиатурыRect и кадра все вместе работают, однако, конечно, клавиатура затемняет текстовое представление ........