Я хочу настроить высоту текстового поля при появлении клавиатуры. В iOS 7 это можно сделать, отредактировав NSLayoutConstraint между текстовым изображением и нижнимLayoutGuide контроллера вида.разрыв между клавиатурой и текстовым просмотром во время анимации
Это прекрасно работает с кодом ниже, за исключением одной детали. Во время анимации текст просматривается впереди клавиатуры и появляется большой зазор. Аналогично в методе keyboardWillHide.
Причина для этой «ошибки», вероятно, связана с тем, что клавиатура начинается со самой нижней части экрана, в то время как текст открывается выше из-за высоты панели инструментов.
Любые предложения о том, как исправить это?
-(void) keyboardWillShow:(NSNotification *) notification
{
//update constraints
CGRect keyboardFrame = [[[notification userInfo] valueForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGRect convertedKeyboardFrame = [[self view] convertRect:keyboardFrame
fromView:nil];
CGRect toolbarFrame = [[[self navigationController] toolbar] frame];
CGRect convertedToolbarFrame = [[self view] convertRect:toolbarFrame
fromView:nil];
CGFloat toolbarAdjustment = (UIInterfaceOrientationIsPortrait([self interfaceOrientation])) ? CGRectGetHeight(convertedToolbarFrame) :CGRectGetWidth(convertedToolbarFrame);
[[_textView bottomSpaceConstraint] setConstant:CGRectGetHeight(convertedKeyboardFrame) - toolbarAdjustment];
//animate change
for (UIView *view in [[self view] subviews])
{
[view setNeedsUpdateConstraints];
}
[UIView animateWithDuration:[[[notification userInfo] valueForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]
delay:0 //0.2 as possible hack, otherwise a gap appears between keyboard and textview
options:[[[notification userInfo] valueForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]
animations:^{
for (UIView *view in [[self view] subviews])
{
[view layoutIfNeeded];
}
}
completion:NULL];
}
Быстрый чита, чтобы избежать вашей ошибки (может даже выглядеть аккуратно): Попросите нижней панели анимировать вниз от экрана перед приведением клавиатуры вверх. – ArtOfWarfare