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

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

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

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

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

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

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

Спасибо

 cheeesus01 мая 2012 г., 14:16
Вы когда-нибудь решали это? Как вы реализовали ответ Луи?

Ответы на вопрос(2)

Решение Вопроса

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

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

 lostInTransit01 февр. 2009 г., 04:58
Здравствуй. В указанном мной коде пароль2 находится над полями bdate и zip, а после zip есть еще ячейки. zip - последняя ячейка, видимая при первом отображении представления. Может ли это быть причиной того, что другие представления еще не прорисованы, что приводит к приходу таблицы в норму? Если нет, то почему бы не сдвинуть его с места?
 Louis Gerbarg02 февр. 2009 г., 02:08
Это не имеет отношения к видам, которые еще не прорисованы. Проблема в том, что табличное представление больше, чем то, что вы отображаете на экране. Тот факт, что клавиатура скрывает его часть, не означает, что ее там нет, а представление делает отскок в зависимости от его размера.
 zambono05 окт. 2011 г., 15:27
там прекрасно работает, но есть небольшая проблема, textfieldshouldbegin вызывается до уведомлений клавиатуры. Поэтому, если вы сначала вызываете нижнее текстовое поле, он пытается прокрутить вверх, но не будет, если весь табличный вид уже виден, а затем на клавиатуре появится изменение размера табличного представления.
//For iOS 7 
        [self.TableView reloadData];
        NSIndexPath *indexPat = [NSIndexPath indexPathForRow:1 inSection:1];
        [self.TableView scrollToRowAtIndexPath:indexPat atScrollPosition:UITableViewScrollPositionTop animated:YES];

Ваш ответ на вопрос