2011-10-07 40 views
0

我有一個子類UIScrollView,它將按鈕傳遞到按鈕上(UIImageViews)。 ScrollView已啓用分頁功能,並以編程方式分佈在2至7頁之間。UIScrollView只接受第二頁上的觸摸

但是隻有在顯示第2頁時纔會識別觸摸。滾動工作正常。

什麼想法?

這裏是我的設定時,我添加滾動型:

lsScroll.pagingEnabled = YES; 
[lsScroll setCanCancelContentTouches:NO]; 
lsScroll.frame = CGRectMake(0, 0, 320, 480); 
lsScroll.bounds = CGRectMake(0, 0, 320, 480); 
lsScroll.contentSize = CGSizeMake(lsScroll.bounds.size.width, lsScroll.bounds.size.height*maxSection); 
[lsScroll setScrollEnabled:YES]; 
lsScroll.delaysContentTouches = YES; 
lsScroll.delegate = self; 
lsScroll.bounces = NO; 
lsScroll.showsHorizontalScrollIndicator = NO; 
lsScroll.showsVerticalScrollIndicator = NO; 
lsScroll.clipsToBounds = YES; 

(其中maxSection)是定義的頁面

欄目頁面,然後以相同的方式增加的號碼一個變量:

section1View = [[UIImageView alloc] initWithFrame:self.view.frame]; 
section1View.bounds = CGRectMake(0, 0, 320, 480); 
section1View.frame = CGRectMake(0, 0, 320, 480); 
[section1View setBackgroundColor:[UIColor clearColor]]; 
[lsScroll addSubview:section1View]; 

section2View = [[UIView alloc] initWithFrame:self.view.frame]; 
section2View.bounds = CGRectMake(0, 480, 320, 480); 
section2View.frame = CGRectMake(0, 480, 320, 480); 
[section2View setBackgroundColor:[UIColor clearColor]]; 
[lsScroll addSubview:section2View]; 

section3View = [[UIImageView alloc] initWithFrame:self.view.frame]; 
section3View.bounds = CGRectMake(0, 960, 320, 480); 
section3View.frame = CGRectMake(0, 960, 320, 480); 
[section3View setBackgroundColor:[UIColor clearColor]]; 
[lsScroll addSubview:section3View]; 

UPDATE:UIImageViews然後加入部分#查看的,這些都是我要幫助潤色檢查對象。是在section2View註冊觸摸,但其他部分的任何UIImageViews都沒有註冊觸摸。

所有內容都能正確顯示,並在正確的位置顯示滾動效果,如果您在頁面/第2部分上,觸摸事件可以正常工作 - 但所有其他觸摸都會失敗。

感謝任何幫助。

更新:這裏是添加'UIImageViews'的代碼。所以你可以看到我已經擁有了一切正確的東西。首先是第1頁上出現的'UIImageViw - 觸摸沒有收到,第2頁上的'UIImageView'觸摸可以工作。

ls1= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ls1.png"]]; 
ls1.center = (CGPoint){ 215, 65 }; 
ls1.transform = CGAffineTransformMakeScale(0.33,0.33); 
[ls1 setUserInteractionEnabled: YES]; 
[section1View addSubview: ls1]; 

ls20= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ls20.png"]]; 
ls20.center = (CGPoint){ 215, 615 }; 
ls20.transform = CGAffineTransformMakeScale(0.33,0.33); 
[ls20 setUserInteractionEnabled: YES]; 
[section2View addSubview: ls20]; 

這些代碼行使用電子表格中的宏創建 - 所以我知道他們都是相同的,都含有setUserInteractionEnabled。

回答

1

section2View是使用UIView創建的,其餘的使用UIImageView。如果userInteractionEnabled在這些圖像視圖中爲NO,則它們的子視圖將不會接收到觸摸。

+0

請參閱我的更新 - 對於所有UIImageView,我已經擁有setUserInteractionEnabled = YES。 – sregorcinimod

+0

謝謝我沒有發現,我已經把一些UIView和UIImageView。將它們全部切換到UIVIew,然後將觸摸傳遞給頂層的UIImageView。 (當你的錯誤是因爲錯字而煩人時) – sregorcinimod