2011-08-20 71 views
3

我覆蓋了子類,它拒絕調用touchesShouldCancelInContentView。我發誓我已經寫了代碼來做到這一點。我正在覆蓋該類,以便某些視圖不會將觸摸事件傳遞到滾動視圖。touchesShouldCancelInContentView不被稱爲

隨着類

@interface SlidingWindowScrollView : UIScrollView 
{ 
    UIView* noTouchView; 
} 

@property (nonatomic, retain) UIView* noTouchView; 
@end 

和實現

@implementation SlidingWindowScrollView 
@synthesize noTouchView; 

- (BOOL)touchesShouldCancelInContentView:(UIView *)view 
{ 
    BOOL shouldCancel = NO; 
    if(view == noTouchView) 
     shouldCancel = YES; 

    NSLog(@"shouldCancel %d", shouldCancel); 
    return shouldCancel; 
} 
@end 

在我扔下一個滾動視圖和裏面一個UIView,寫這在VC視圖做負載的廈門國際銀行。

scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width*2, 
            scrollView.bounds.size.height); 
scrollView.pagingEnabled = YES; 
scrollView.canCancelContentTouches = YES; 

contentView.frame = CGRectMake(scrollView.frame.size.width + 20, 
           0, 
           scrollView.frame.size.width, 
           scrollView.frame.size.height); 
contentView.userInteractionEnabled = YES; 
scrollView.noTouchView = contentView; 
[scrollView setContentOffset:CGPointMake(scrollView.bounds.size.width, 0) animated:YES]; 

我不知道給了什麼。這應該是一個簡單的覆蓋。我確信XIB中的自定義類是正確的,並且網點都表示它是我的UIScrollView的新子類。我不是故意放肆但在最新的iOS API中做了些什麼?這看起來應該很容易,但它從來沒有調用touchesShouldCancelInContentView函數。我很困惑。我非常感謝有人可以證明我錯了,並得到這個函數被scrollView調用。我想應該注意的是,打印語句確實打印出來了,但它可以始終如一地完成

如果你能在你的機器上正常工作,請讓我知道,因爲我沒有看到任何錯誤。這讓我瘋狂@ _ @希望有人能幫助我。謝謝。

+0

我想應該指出,我試圖覆蓋touchesBegan成功和touchesShouldBegin的作品,但它只觸發時觸摸釋放這是違背文檔說什麼是「被子類覆蓋自定義默認行爲時手指觸摸向下顯示的內容。「 – Biclops

+0

也在模擬器中運行,僅供參考。 – Biclops

回答

13

從我所看到的東西,你沒有得到touchesShouldCancelInContentView:或touchesShouldBegin:withEvent:方法inContentView:回調,除非你有delaysContentTouches設置爲NO:

scrollView.delaysContentTouches = NO; 
+9

雖然,我給delayedContentTouches'NO'仍然touchesshouldcancelincontentview沒有被調用 – Femina

+0

爲我工作!文檔中沒有很好的記錄。謝謝澄清! –

4

我就死在這一段時間櫃面你讀過這一點,你需要有既touchesShouldCancelInContentView接觸之前設置以下屬性將火

scrollView.delaysContentTouches = NO; 

scrollView.canCancelContentTouches = YES; 

只要有scrollView.delaysContentTouches = NO不會火,如果scrollView.canCancelContentTouches = NO

+0

很高興知道我會試試這個,如果我回到這個代碼。謝謝。 – Biclops