2012-03-01 61 views
3

我想使一個滾動視圖只能在某個區域上滾動。爲此,我將UIScrollView繼承並覆蓋touchesBegan(類似於this question)。UIScrollView子類永遠不會收到touchesBegan消息的刷卡

這是我的(很簡單)代碼。

.H

@interface SuppressableScrollView : UIScrollView 
@end 

的.m

#import "SuppressableScrollView.h" 

@implementation SuppressableScrollView 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesBegan touches=%@ event=%@", touches, event); 
    [super touchesBegan:touches withEvent:event]; 
} 

@end 

的touchesBegan只被稱爲該UIScrollView的不正常消耗(抽頭等)的觸摸。任何想法如何攔截所有的觸摸?

我想我錯過了某個地方的概念。

回答

5

我最近正在研究類似的UITableViews。 UITableView是UIScrollView的擴展。在挖裏面的時候,我發現有4個手勢識別器連接到UIScrollView來拾取滑動和其他東西。我會建議轉儲出手勢識別器屬性,看看是否有任何被自動創建(我認爲他們是)。在這種情況下,我能想到的唯一選項就是將其刪除,但滾動視圖不會響應手勢。

所以,也許你需要看看那些手勢識別器和手勢識別器代表,你可以使用它來看看是否有更好的地方可以進入。

P.S.一旦他們識別出正在進行的手勢,手勢識別器將自動開始吞嚥事件。

0

如果幀大小大於內容大小,則觸摸開始的方法可能不會觸發。

由於它只適用於水龍頭,我的猜測是滾動視圖的內容大小設置不正確。

相關問題