- [UITableView scrollToRowAtIndexPath:] прокручивается, но возвращается к 1-й строке - PullRequest
4 голосов
/ 26 января 2009

У меня есть сгруппированное табличное представление с текстовыми полями в табличном представлении. Чтобы клавиатура не скрывала текстовые поля, в textFieldShouldBeginEditing я вызываю метод scrollToRowAtIndexPath и устанавливаю позицию прокрутки строки, редактируемой в верхней части табличного представления.

Прокрутка происходит, но как только появляется клавиатура (т. Е. Как только textFieldShouldBeginEditing возвращает YES), таблица прокручивается обратно в исходное положение и отображает первую строку первого раздела сверху. Я не вызываю reloadTable после вызова scrollToRowAtIndexPath.

Проблема возникает только для строк 4 и 5 (bdate и zip), пароль2 работает должным образом.

Это код, который я использую для прокрутки к определенной строке

if(textField == password2){
    indPath = [NSIndexPath indexPathForRow:3 inSection:0];
    [self.tableView scrollToRowAtIndexPath:indPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    return YES;
}
else if(textField == bdate){
    indPath = [NSIndexPath indexPathForRow:4 inSection:0];
    [self.tableView scrollToRowAtIndexPath:indPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    return YES;
}
else if(textField == zip){
    indPath = [NSIndexPath indexPathForRow:5 inSection:0];
    [self.tableView scrollToRowAtIndexPath:indPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    return YES;
}

Может кто-нибудь сказать мне, что может быть не так? Любое понимание поможет.

Спасибо

Ответы [ 2 ]

5 голосов
/ 30 января 2009

Я подозреваю, что происходит то, что табличное представление имеет резиновую полосу, как веб-представление в Safari, когда вы запускаете его границы. Наиболее вероятная причина этого заключается в том, что когда вы открываете клавиатуру, она находится над табличным представлением, но табличное представление не сжимается физически, поэтому все UITableViewCells помещаются в частично скрытый UITableView, и когда некоторые из них прокручиваются это резиновые ленты, чтобы они все были внутри него.

Чтобы проверить это, попробуйте уменьшить размер представления списка, чтобы вы могли видеть все, когда отображается клавиатура. Если ошибка исчезнет, ​​вы захотите написать код, который динамически изменяет размер по мере анимации клавиатуры в и вне.

0 голосов
/ 03 декабря 2013
//For iOS 7 
        [self.TableView reloadData];
        NSIndexPath *indexPat = [NSIndexPath indexPathForRow:1 inSection:1];
        [self.TableView scrollToRowAtIndexPath:indexPat atScrollPosition:UITableViewScrollPositionTop animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...