Как программно перемещают UIScrollView, чтобы сфокусироваться в управлении выше клавиатуры?

Общий сценарий создания таких PR выглядит следующим образом:

  1. разветвляют репозиторий http://prntscr.com/m7yhq0
  2. делают там новая ветка с именем вроде fix / нескольких-опечаток http://prntscr.com/m7ytis
  3. изменить файл и зафиксировать ваши изменения в ветке (там не должно возникнуть никаких трудностей)
  4. перейдите в исходный репозиторий, нажмите Новый запрос на извлечение и выберите сравнить по вилкам http://prntscr.com/ m7yih0
  5. выберите необходимые ветки для PR, а затем кнопка Создать запрос на извлечение будет включена.
  6. Просмотрите изменения, показанные ниже, и нажмите Создать запрос на извлечение

Надеюсь, что это поможет.

50
задан Cœur 23 March 2017 в 06:01
поделиться

3 ответа

Наконец, простая фиксация:

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];

Теперь я думаю, только объединение это со ссылкой выше и установлено!

38
ответ дан itsji10dra 7 November 2019 в 10:34
поделиться

Если Вы устанавливаете delegate из Ваших текстовых полей к объекту контроллера в Вашей программе, у Вас может быть та реализация объекта textFieldDidBeginEditing: и textFieldShouldReturn: методы. Первый метод может затем использоваться для прокрутки к текстовому полю, и второй метод может использоваться для прокрутки назад.

можно найти код, который я использовал для этого в моем блоге: Скользящий UITextViews вокруг для предотвращения клавиатуры . Я не протестировал этот код на текстовые представления в UIScrollView, но он должен работать.

2
ответ дан Matt Gallagher 7 November 2019 в 10:34
поделиться

Вот что сработало для меня. Наличие переменной экземпляра, которая содержит значение смещения 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;
}
77
ответ дан 7 November 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: