2010-08-02 83 views
0

我正在使用UIScrollview,當我試圖捕捉UIscrollview中的觸摸事件沒有響應。我應該如何實現它?我正在使用UILable顯示文本。如何在UIScrollView中啓用觸摸?

+0

在哪裏看,你如何嘗試捕捉觸摸?以及uilabel如何與這個問題相關? – Vladimir 2010-08-02 12:29:56

回答

0

從iOS 3.2開始,UIScrollView不會偵聽touchesBegan:,touchesMoved:,touchesEnded :,等等,afaik。

您應該添加手勢識別器來處理UIScrollView中的觸摸事件。 http://developer.apple.com/iphone/library/documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html

但是,如果你要處理的觸摸在UIScrollView的子視圖之一,這將是最好的閱讀UIScrollView的文檔中的概述部分。參見touchesShouldBegin:withEvent:inContentView:,pagingEnableddelaysContentTouches等等。 http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html

+0

我正在訪問他們就好,但有一個小黑客。看到我的答案在你的上方/下方。 – Kalle 2010-08-02 17:12:27

0

「split」寫道我在項目中使用的解決方案here能夠訪問滾動視圖中的觸摸。

3

是的,我也面臨同樣的問題,但最後我得到了補救。 解決方案是,你必須創建從UIScrollView中繼承的類,如下所示:

#import <Foundation/Foundation.h> 
@interface CustomScrollView : UIScrollView 
{ 

} 

@end 

,並在其執行文件來覆蓋觸摸方法如下:

#import "CustomScrollView.h" 


@implementation CustomScrollView 

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

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

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    [self.nextResponder touchesEnded:touches withEvent:event]; 
} 

@end 

你將不得不進口該類在需要的文件中使用它的對象而不是UIScrollview的對象 現在你可以看到,控件觸及類的方法,只要你觸摸它就可以在其中添加滾動視圖。

謝謝。

0

不需要去任何地方簡單的解決方案是here。真的和你想象的一樣簡單。