2011-02-09 65 views
12

我有一個UIScrollView設置爲有一個清晰的背景。部分scrollview確實有內容,但部分內容沒有(所以它顯示了其後的其他視圖)。我希望能夠點擊UIScrollView和後面的MKMapView,但僅限於UIScrollView的透明部分。iPhone:單擊視圖後透明UIScrollView

我已經發現了我有一個真正的很難理解如何獲得工作的一些代碼:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    if (![self yourMethodThatDeterminesInterestingTouches:touches withEvent:event]) 
     [self.nextResponder touchesBegan:touches withEvent:event]; 
} 

有人能幫助我總結我的腦海圍繞如何轉發觸摸事件的觀點是在另一個觀點?我可以調用 - (void)touchesBegan:(NSSet *)從UIViewController觸發事件:(UIEvent *)事件?

+0

有趣,我只是有相反的問題。由於某種原因,我的接觸正在傳遞。給我一分鐘,我會看看我能否記得發生了什麼事。 – jakev 2011-02-09 05:19:00

回答

7

我們所做的就是對UIScrollView進行子類化,並實現將責任下移到其下的視圖的邏輯,如果觸摸發生在透明區域內。

在我們的情況下,透明區域由120 contentOffset Y軸定義的,這意味着我們的內容開始120點的UIScrollView的開始的下方,並且代碼看起來是這樣的:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (self.contentOffset.y < 0 && point.y < 0.0) { 
     return NO; 
    } else { 
     return YES; 
    } 
} 

顯然,這響應已經過時了,但希望這對任何尋求解決方案的人都有幫助。

3

基本上,由您來決定什麼樣的觸摸事件你關心轉發到另一個響應者。如果您只想轉發所有觸摸事件,只需刪除您發佈的代碼中的if語句,以便下一個響應者將收到所有觸摸事件。