Я использую пример из библиотеки разработчиков IOS для управления клавиатурой.
Текстовое, веб-издание и руководство по программированию
Я создал вид, используя IB. Это простой пользовательский интерфейс, который имеет UIScrollView, UITextView, UIButton и UITextField. Я поместил UIScrollView на свое представление, а затем добавил все остальные элементы управления в качестве дочерних элементов этого scrollview. Scrollview открывается для viewcontroller через IBOutlet "scrollView".
Следующий код выполняется, когда пользователь устанавливает фокус на textField, но я никогда не вижу, чтобы появлялась полоса прокрутки и содержимое полосы прокрутки не перемещалось. Должен ли я видеть полосу прокрутки по умолчанию? Может кто-нибудь сказать мне, что мне не хватает?
-(void) keyboardWasShown:(NSNotification *)aNotification{
NSDictionary * info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;
// If active text field is hidden by keyboard, scroll it so it's visible
// Your application might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {
CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height);
[scrollView setContentOffset:scrollPoint animated:YES];
}
}
Опять же, я беру этот код прямо из руководства по программированию IOS по ссылке. Макет пользовательского интерфейса выглядит как основное окно чата. Я хотел бы переместить поле ввода вверх, пока отображается программная клавиатура. Спасибо!
Обновление
Похоже, мне нужно было добавить некоторые отступы, чтобы увидеть элементы управления, расположенные внизу прокрутки.
CGPoint scrollPoint = CGPointMake(0.0, (activeField.frame.origin.y - kbSize.height) + 10.0);
Почему я не вижу полосы прокрутки?