2011-12-27 189 views
37

我想檢測是否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

回答

107

如果要實現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)。 – fabian789 2012-12-07 06:45:50

6

如果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

1

這些是UITableViewDelegate的方法斯威夫特3,以檢測當一個UITableView將滾動或做滾動:

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 

} 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

}