2013-08-13 3 views
0

В последней строке таблицы, у меня есть текстовое поле, которое принимает ввод и завершено, оно добавляет текст в строку и обновляет таблицу. Мне нужно прокрутить таблицу до последней строки, когда появится клавиатура.UITableview scrollToRowAtIndexPath не работает для последней строки

Я сделал две вещи, чтобы справиться с этим, но это не сработало.

-(void) textFieldDidBeginEditing:(UITextField *)textField { 
    [archiveTabelView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:YES]; 
    archiveTabelView.scrollEnabled = NO; 
} 

Это не работает, и если мы называем scrollToRowAtIndexPath после задержки он даже не работает.

Просьба предложить.

+0

Убедитесь, что вы установили делегат и проверьте с помощью точки останова, вызываемый метод. – Manthan

ответ

0

Лучший способ справиться с прокруткой, когда клавиатура отображается, чтобы зарегистрировать свой класс в качестве наблюдателя к UIKeyboardDidShowNotification или UIKeyboardWillShowNotification в зависимости, если вы хотите, чтобы переместить содержимое и UIKeyboardWillHideNotification или UIKeyboardDidHideNotification в зависимости, если вы хотите, чтобы переместить содержание вниз.

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

Также будьте осторожны, если вы позвоните по телефону resingFirstResponder по телефону UITextField, уведомление о скрытии будет отправлено.

Теперь для того, чтобы сделать ваше представление таблицы для прокрутки правильно, когда клавиатура отображается/скрыть придется увеличивать/уменьшать contentSize в Tableview UIScrollView и, вероятно, использовать setContentOffset:animated: вместо scrollToRow.

+0

Это сработало, но интересно, почему scrollToRow не работает. Спасибо хоть! –

+0

@NabeelThobani Прокрутка будет прокручиваться до тех пор, пока не будет видна строка. Поэтому, если ваша строка видна (внизу), она больше не будет прокручиваться. – danypata

0

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

1

Настройка анимированного NO, как-то работала для меня. Не уверен, что именно по этой причине.

[archiveTabelView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:NO]; 
Смежные вопросы