У меня есть вид, встроенный в прокрутку. Я написал код таким образом, что когда курсор помещается в текстовое поле (внутри представления), которое скрывается клавиатурой, экран будет перенастроен так, что текстовое поле больше не будет скрыто. Я использую autolayout для этого.Использование Autolayout с UIView, встроенным в UIScrollView
Моя проблема заключается в том, что когда я помещаю View в контроллер просмотра в положение, которое я хочу, перед запуском симулятора появляется много лишнего пробела. Но когда клавиатура появляется (и экран перерисовывается), я могу прокручивать вверх, а контроллер просмотра больше не имеет этого дополнительного пробела.
Если я отрегулирую представление так, чтобы не было никакого пробела (так оно появляется на раскадровке), тогда, когда появляется клавиатура, я не могу прокрутить вверху окна.
Я предполагаю, что это имеет какое-то отношение к тому, как представление сосредоточено в пределах прокрутки, но я пробовал множество настроек ограничений в инспекторе размеров и не могу решить эту проблему. Я бы очень хотел, чтобы исправить это в раскадровке (по сравнению с помощью кода), если это вообще возможно ...
Вот код:
- (void) keyboardDidShow:(NSNotification *)notification
{
NSDictionary* info = [notification userInfo];
CGRect kbRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
kbRect = [self.view convertRect:kbRect fromView:nil];
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbRect.size.height, 0.0);
self.scrollView.contentInset = contentInsets;
self.scrollView.scrollIndicatorInsets = contentInsets;
CGRect aRect = self.view.frame;
aRect.size.height -= kbRect.size.height;
if (!CGRectContainsPoint(aRect, self.activeField.frame.origin)) {
[self.scrollView scrollRectToVisible:self.activeField.frame animated:YES];
}
}
- (void) keyboardWillBeHidden:(NSNotification *)notification
{
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.scrollView.contentInset = contentInsets;
self.scrollView.scrollIndicatorInsets = contentInsets;
}
Добавить скриншоты –
У меня нет разрешения на публикацию скриншотов, но это вид сверху Вид прокрутки сверху контроллера просмотра. Ниже приведены ограничения в представлении «Высота: 358», «Задание пробела»: «Наблюдение», «Ведущее пространство»: «Наблюдение», «Выровнять центр X»: «Наблюдение», «Нижнее пространство»: «Наблюдение»: 100, «Верхнее пространство»: «Наблюдение» равно 15 – gumbynr