Прокрутка табличного представления, когда текстовое поле начинает редактировать iphone - PullRequest
0 голосов
/ 12 июня 2010

У меня есть контроллер табличного представления в приложении iphone. Табличное представление имеет два раздела. Первый раздел имеет два ряда, а второй раздел имеет один ряд. Второй раздел имеет настраиваемую ячейку табличного представления.

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

Я попробовал следующий код, который я встречал на разных сайтах, но тщетно.

Заранее спасибо.

-(void) textFieldDidBeginEditing:(UITextField *)textField {

    CGRect textFieldRect = [textField frame];
    [self.tableView scrollRectToVisible:textFieldRect animated:YES];
} 
                          atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}

-(void) textFieldDidBeginEditing:(UITextField *)textField {

    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
    [self.tableView scrollToRowAtIndexPath:[tableView indexPathForCell:cell] 
                          atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}

Ответы [ 3 ]

9 голосов
/ 28 июня 2012

Я столкнулся с этим на телеканалах Static Cell. Существует проблема при переопределении viewWillAppear, а не при вызове Super. Так что, если вы делаете это, обязательно позвоните

[super viewWillAppear:animated];

вверху viewWillAppear

3 голосов
/ 22 марта 2011

Вы хотите использовать метод setContentOffset табличного представления.Определите величину вертикальной прокрутки (в пикселях), а затем:

CGFloat verticalScroll = ... your code here ...
[self.tableView setContentOffset:CGPointMake(0, verticalScroll) animated:YES];
0 голосов
/ 19 ноября 2012

Моя проблема заключалась в добавлении ячейки таблицы, содержащей UITextField, в

- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

функция. Если вы сделаете это, автоматическая прокрутка UITableView не будет работать.

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

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...