我想检测我的表格视图是否已经滚动过,我尝试了所有的触摸事件,像这样:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//my code
}
但似乎所有触摸事件都不响应滚动,只有在触摸、移动单元格等操作时才响应。
有没有一种方法可以检测UITableView的滚动事件?
我想检测我的表格视图是否已经滚动过,我尝试了所有的触摸事件,像这样:
- (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
,可以在文档或头文件中看到。
以下是使用 Swift
来检测 UITableView
将要滚动或已经滚动的 UITableViewDelegate
方法:
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UITableView* fromTableView = (UITableView*) scrollView;
UITableView* targetTableView = nil;
if (fromTableView == self.leftTable) {
targetTableView = self.leftTable;
} else {
targetTableView = self.rightTable;
}
...
}