Общий сценарий создания таких PR выглядит следующим образом:
Надеюсь, что это поможет.
Наконец, простая фиксация:
UIScrollView* v = (UIScrollView*) self.view ;
CGRect rc = [textField bounds];
rc = [textField convertRect:rc toView:v];
rc.origin.x = 0 ;
rc.origin.y -= 60 ;
rc.size.height = 400;
[self.scroll scrollRectToVisible:rc animated:YES];
Теперь я думаю, только объединение это со ссылкой выше и установлено!
Если Вы устанавливаете delegate
из Ваших текстовых полей к объекту контроллера в Вашей программе, у Вас может быть та реализация объекта textFieldDidBeginEditing:
и textFieldShouldReturn:
методы. Первый метод может затем использоваться для прокрутки к текстовому полю, и второй метод может использоваться для прокрутки назад.
можно найти код, который я использовал для этого в моем блоге: Скользящий UITextViews вокруг для предотвращения клавиатуры . Я не протестировал этот код на текстовые представления в UIScrollView
, но он должен работать.
Вот что сработало для меня. Наличие переменной экземпляра, которая содержит значение смещения UIScrollView до настройки представления для клавиатуры, чтобы вы могли восстановить предыдущее состояние после возврата UITextField:
//header
@interface TheViewController : UIViewController <UITextFieldDelegate> {
CGPoint svos;
}
//implementation
- (void)textFieldDidBeginEditing:(UITextField *)textField {
svos = scrollView.contentOffset;
CGPoint pt;
CGRect rc = [textField bounds];
rc = [textField convertRect:rc toView:scrollView];
pt = rc.origin;
pt.x = 0;
pt.y -= 60;
[scrollView setContentOffset:pt animated:YES];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[scrollView setContentOffset:svos animated:YES];
[textField resignFirstResponder];
return YES;
}