Как я могу заставить UITextField двигаться вверх при наличии клавиатуры - при начале редактирования?

С iOS SDK:

у меня естьUIView сUITextFieldс, которые воспитывают клавиатуру. Мне нужно, чтобы я мог:

Allow scrolling of the contents of the UIScrollView to see the other text fields once the keyboard is brought up

Automatically "jump" (by scrolling up) or shortening

Я знаю что мне нужноUIScrollView, Я пытался изменить класс своегоUIView кUIScrollView но я все еще не могу прокрутить текстовые поля вверх или вниз.

Нужно ли обоимUIView иUIScrollView? Один входит в другой?

Что необходимо реализовать, чтобы автоматически прокручивать активное текстовое поле?

В идеале, максимально возможная настройка компонентов будет выполняться в Интерфейсном Разработчике. Я хотел бы писать код только для того, что ему нужно.

Обратите вниманиеUIView (или жеUIScrollView), с которой я работаю, отображается на панели вкладок (UITabBar), который должен функционировать как обычно.

Изменить: я добавляю полосу прокрутки только для того, когда клавиатура появляется. Даже если это не нужно, я чувствую, что он обеспечивает лучший интерфейс, потому что тогда пользователь может, например, прокручивать и изменять текстовые поля.

У меня это работает, когда я меняю размер кадраUIScrollView когда клавиатура идет вверх и вниз. Я просто использую:

-(void)textFieldDidBeginEditing:(UITextField *)textField { 
    //Keyboard becomes visible
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
                     scrollView.frame.origin.y, 
scrollView.frame.size.width,
scrollView.frame.size.height - 215 + 50);   //resize
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
   //keyboard will hide
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
       scrollView.frame.origin.y, 
     scrollView.frame.size.width,
      scrollView.frame.size.height + 215 - 50); //resize
}

Однако это не приводит к «автоматическому» движению вверх ». или центрируйте нижние текстовые поля в видимой области, что мне бы очень хотелось.

Ответы на вопрос(30)

Ваш ответ на вопрос