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) { }