Как я могу сделать UITextField двигаться вверх, когда клавиатура присутствует?


С iOS SDK:

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

  1. разрешить прокрутку содержимого UIScrollView посмотреть другие текстовые поля после того, как клавиатура воспитывается

  2. автоматически "прыгать" (путем прокрутки вверх) или укорочение

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

мне нужны оба a UIView и UIScrollView? Входит ли одно в другое?

что необходимо реализовать для автоматической прокрутки до активного текстового поля?

в идеале, как можно больше настроек компонентов будет сделано в Interface Builder. Я хотел бы писать код только для того, что в нем нуждается.

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


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

у меня есть это работает, где я изменить размер кадра 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 1574

30 ответов: