UITableView的滚动事件

问题描述:

我想检测是否mytable的观点已滚动,我试过所有触摸事件,像这样的:UITableView的滚动事件

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

,但似乎所有的触摸事件不响应滚动,但他们的唯一反应当细胞被触摸,移动,等...

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

+2

请参阅本[中UIScroll查看在iPhone触摸事件(HTTP://计算器.com/a/3603140/1072867) – akk 2011-12-27 08:58:15

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

+0

它的工作原理,谢谢! – 2011-12-27 09:11:29

+1

什么时候我们有多个UITableView? – Solidus 2012-12-06 20:02:46

+1

您应该可以将两个表视图的委托设置为'self',然后使用传递的'scrollView'来检查哪一个被滚动。 [见这里](http://pastebin.com/FzmcYNzv)。 – f*789 2012-12-07 06:45:50

如果Solidus提出了多个表视图,则可以将回调中的滚动视图转换为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; 
     } 
... 
} 
+0

完美这帮了我 – Paul 2015-03-07 23:25:00

这些是UITableViewDelegate的方法斯威夫特3,以检测当一个UITableView将滚动或做滚动:

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 

} 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

}