2013-09-19 4 views
2

Кто-нибудь знает, как прокручивать UITableView на iOS7?Прокрутка UITableView в iOS7

Я использовал, чтобы использовать этот код и он работал очень хорошо, но теперь, кажется, что что-то изменилось с contentSize (у меня была проблема, как это с TextView)

[self.tableView scrollRectToVisible:CGRectMake(0, 0, self.tableView.contentSize.width, self.tableView.contentSize.height) animated:YES] 

EDIT:

Мой код как этот

viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 

keyboardWillShow:

[self.tableView scrollRectToVisible:CGRectMake(0.0, self.tableView.contentSize.height - 1.0, 1.0, 1.0) animated:NO]; 

Ошибка:

я не заметил свиток, когда клавиатура появилась потому, что я не обновлял contentSize.

Решение (основано на Дэниела ответ)

CGSize size = self.tableView.contentSize; 
size.height += keyboardBounds.size.height; 
self.tableView.contentSize = size; 

[self.tableView scrollRectToVisible:CGRectMake(0.0, self.tableView.contentSize.height - 1.0, 1.0, 1.0) animated:NO]; 
+0

Что происходит или не происходит при запуске этого кода? – Fogmeister

+0

Просто ничего .. – Gnamm

+1

ОК, но не определяйте ничего. Вы используете его, когда находитесь в верхней части таблицы? Или это прокручивается? Каков размер контента? Очевидно, есть разница между тем, что происходит и что вы ожидаете. Но говоря: «это не делает то, что я хочу», не помогает. – Fogmeister

ответ

1

В теории ваш код не должен ничего делать. Вы прокручиваете прямоугольник, который является размером с содержимым tableview!

Потому что вы используете, потому что это весь вид таблицы в основном.

Если вы хотите, чтобы перейти к нижней части, вы должны сделать это:

[self.tableView scrollRectToVisible:CGRectMake(0.0, 
               self.tableView.contentSize.height - 1.0, 
               1.0, 
               1.0) 
          animated:YES]; 
+0

Я пробовал это решение, но не работает – Gnamm

+0

Проскальзывает на дно то, что вы пытаетесь сделать? Пожалуйста, убедитесь, что вы вызываете это после viewDidLoad, и все настроено так, как вы ожидаете. Может быть, вы слишком скоро позвоните. – Daniel

0

Для TableView есть другой метод для прокрутки

[self.tableView scrollToRowAtIndexPath:desireRowIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

Чтобы просмотреть более подробную информацию об этом у вас есть посмотреть на this

Смежные вопросы