Событие прокрутки UITableView
Я хочу определить, была ли прокручена точка просмотра mytable, я пробовал все события касания, подобные этому:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//my code
}
но кажется, что все события касания не отвечают на прокрутку, но они реагируют только тогда, когда клетки касаются, перемещаются,... и т.д.
Есть ли способ обнаружить событие прокрутки UITableView?
Ответы
Ответ 1
Если вы реализуете протокол UITableViewDelegate
, вы также можете реализовать один из методов UIScrollViewDelegate
:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
или же
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
Например, если у вас есть свойство с именем tableView
:
// ... setting up the table view here ...
self.tableView.delegate = self;
// ...
// Somewhere in your implementation file:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"Will begin dragging");
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"Did Scroll");
}
Это связано с тем, что UITableViewDelegate
соответствует UIScrollViewDelegate
, что можно увидеть в документации или в заголовочном файле.
Ответ 2
Если у вас есть несколько табличных представлений по запросу Solidus, вы можете отбросить scrollview из обратного вызова в tableview, поскольку UITableView получен из UIScrollView, а затем сравнивается с табличными представлениями, чтобы найти исходное табличное представление.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UITableView* fromTableView = (UITableView*) scrollView;
UITableView* targetTableView = nil;
if (fromTableView == self.leftTable) {
targetTableView = self.leftTable;
} else {
targetTableView = self.rightTable;
}
...
}
Ответ 3
Это методы из UITableViewDelegate
для Swift 3 для обнаружения, когда прокрутка или прокрутка UITableView
:
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}