我有豎直地堆疊在一個視圖控制器在彼此的頂部的兩個水平滾動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的位置,並將邏輯所有在一個方法報告兩個職位,當任何一個移動,這不是我正在尋找。
任何幫助表示讚賞。我很想解決這個問題,但是我也很想理解我接近這個問題的任何更大的問題。這件事還是新的。一直在想我得到了它的竅門,然後我碰到的東西,停在我的軌道..
thankyou thankyou thankyou 這就是我所需要的。很簡單。 讓我覺得自己像個白癡。應該已經意識到我需要指定我想在該方法中跟蹤哪個scrollView。 感謝您的正確方向,我再次參加比賽。 – crgt 2009-09-27 07:24:26
而不是scrollview1 == scrollview use [scrollview1 isEqual:scrollView] – tapmonkey 2013-04-02 09:42:59
我們實際上只對指針相等感興趣,因爲指針提供視圖的唯一標識。 – kperryua 2013-04-03 22:15:26