2011-01-26 32 views
0

我一直在處理這個問題數週,仍然沒有解決方案。請幫忙。雙水平滾動視圖觸及問題

我有一個很大的滾動視圖與圖像。每個圖像都是屏幕寬,並且啓用了分頁功能。

在這個滾動視圖,在底部,我有另一個按鈕滾動視圖。每個圖像的每個按鈕。當我按下圖像按鈕時,大滾動視圖跳轉到圖像。

因爲我有很多圖像,我有很多按鈕上的小滾動視圖。

現在,大滾動和小滾動工作正常,按鈕也。

我的問題從小滾動的盡頭開始。當我在小滾動的結尾(但仍然在大滾動的中間),當我將手指移動到死角時,我不希望大滾動。你可以說我想把小卷從大卷中分離出來,但是仍然把他當作子視圖(因爲我想讓它跟大卷一起移動)。

我已經嘗試了繼承小滾動,按鈕,重寫hitTest和touchesBegan/End,但目前爲止沒有任何結果。

我真的非常沮喪,因爲我的客戶要求這樣工作。

我已經搜索了這麼久,我找不到任何東西!

HELLLPPPPP!

回答

0

下面是一段代碼,我發現是無價的在我的項目之一:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    UIView* result = [super hitTest:point withEvent:event]; 

    if (/* result or any of its superviews are equal to your little scroll view */) { 
     [self setContentOffset:CGPointZero animated:YES]; 
     self.scrollEnabled = NO; 
    } else { 
     self.scrollEnabled = YES;  
    } 
    return result; 
} 

如果我明白你的問題正確,我認爲這會給你所期望的行爲。我在if語句(註釋)中有一些僞代碼,因爲瀏覽所有的高級視圖需要循環,這會使代碼更加複雜,但如果您熟悉視圖層次結構,則通常可以找到更簡單的解決方案。

我希望這會有所幫助,如果您在理解代碼時遇到任何問題,我將很樂意爲您提供解釋。

編輯:基本的想法是,如果手指觸摸小滾動視圖,大滾動視圖中滾動,以便大滾動視圖不會滾動。如果您的手指未觸及小滾動視圖,大滾動視圖的滾動會重新打開,並且應該像正常一樣運行。

+0

我應該把它放在大的scrollview子類還是在mainview子類中? – 2011-01-26 13:55:30