UITableView滚动事件

我想检测如果mytable视图已经滚动,我尝试了所有的触摸事件,如:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; //my code } 

但似乎所有的触摸事件都不响应滚动,但只有当单元格被触摸,移动,等等时才会响应

有没有办法来检测UITableView的滚动事件?

如果你实现了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 ,可以在文档或头文件中看到。

如果Solidus问你有多个表视图,你可以将scrollview从callback中转换为tableview,因为UITableView是从UIScrollView派生的,然后与tableview比较来查找源tableview。

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { UITableView* fromTableView = (UITableView*) scrollView; UITableView* targetTableView = nil; if (fromTableView == self.leftTable) { targetTableView = self.leftTable; } else { targetTableView = self.rightTable; } ... } 

这些是从UITableViewDelegate Swift 3的方法来检测UITableView将滚动或滚动的时间:

 func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { } func scrollViewDidScroll(_ scrollView: UIScrollView) { }