2009-09-27 57 views
3

我有豎直地堆疊在一個視圖控制器在彼此的頂部的兩個水平滾動UIScrollViews。每個UIScrollView佔用一半的屏幕。我試圖獨立地跟蹤兩個UIScrollViews的位置。使用scrollViewDidScroll與多個UIScrollViews

我已經成功地使用這種跟蹤頂部的UIScrollView的位置:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView1 { 

int Position = (scrollView1.contentOffset.x); 

    if (Position == 0) { 
    NSLog(@"Play A"); 
    } 

    else if (Position == 280) { 
    NSLog(@"Play B"); 
    } 

//etc. 
} 

我想跟蹤底部的UIScrollView的位置爲好。

當我嘗試使用此:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView2 { 

int Position2 = (scrollView2.contentOffset.x); 

if (Position2 == 0) { 
NSLog(@"Play A2"); 
} 

else if (Position == 280) { 
NSLog(@"Play B2"); 
} 

//etc. 
} 

我得到,說: 「FirstViewConroller scrollViewDidScroll的定義」 的錯誤。

所以,決心按上,我嘗試了相當hackish的解決方案,並試圖使用它代替:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView2 

{ 

int Position2 = (scrollView2.contentOffset.x); 

if (Position2 == 0) { 
NSLog(@"Play A2"); 
} 

else if (Position2 == 280) { 
NSLog(@"Play B2"); 
} 

//etc. 
} 

這裏的問題是,它觸發方法當我移動無論是UIScrollViews的。例如 - 如果我移動底部的UIScrollView 280個像素(一個圖像)的權利,輸出我在控制檯得到的是:

更多播放
PlayB2

如果我移動上面的UIScrollView三個圖像向右輸出我得到的是:

PlayC
PlayC2

這沒有任何意義,我。

我想我可能會反對的代表是如何工作的我自己的理解不夠充分,被碰撞了。在viewDidLoad方法中,我設置了兩個:

scrollView1.delegate = self; 
scrollView2.delegate = self; 

也許這是問題的一部分?也許我通過聲明兩個scrollView具有相同的委託而導致麻煩?只是不確定。

我也嘗試將所有條件語句合併到一個方法中 - 但我只想跟蹤底部UIScrollView在移動時的位置以及移動時頂部UIScrollView的位置,並將邏輯所有在一個方法報告兩個職位,當任何一個移動,這不是我正在尋找。

任何幫助表示讚賞。我很想解決這個問題,但是我也很想理解我接近這個問題的任何更大的問題。這件事還是新的。一直在想我得到了它的竅門,然後我碰到的東西,停在我的軌道..

回答

14

這也正是UIScrollView參數是什麼。創建IB到scrollView1和scrollView2連接,然後做到這一點:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 

    if (scrollView1 == scrollView) { 
     // Do stuff with scrollView1 
    } else if (scrollView2 == scrollView) { 
     // Do stuff with scrollView2 
    } 
} 
+0

thankyou thankyou thankyou 這就是我所需要的。很簡單。 讓我覺得自己像個白癡。應該已經意識到我需要指定我想在該方法中跟蹤哪個scrollView。 感謝您的正確方向,我再次參加比賽。 – crgt 2009-09-27 07:24:26

+0

而不是scrollview1 == scrollview use [scrollview1 isEqual:scrollView] – tapmonkey 2013-04-02 09:42:59

+1

我們實際上只對指針相等感興趣,因爲指針提供視圖的唯一標識。 – kperryua 2013-04-03 22:15:26

0

沒有理由爲什麼同樣的對象不能是幾個不同的scrollviews委託。該-scrollViewDidScroll原因是:通過你有問題的滾動視圖是讓你知道哪些滾動視圖做滾動。

這是委託消息的一般模式。