2012-07-12 78 views
0

好吧這應該是一個簡單的任務,但它一直讓我發瘋。UIView菜單在UIScrollView

我想要實現的是一個UIScrollView,顯示在屏幕的側面和底部的靜態透明工具欄後面。該結構目前已設置爲使scrollView(UIScrollView的子類)和overlay(UIView的子類)都是RootViewController的子視圖。

​​

問題是,如果我能overlay.userInteractionEnabled所有接觸到的層並不能得到的滾動視圖。但是,如果我關閉用戶交互的scrollView工作正常,但我無法與疊加層進行交互。

至於處理觸摸,我用RootViewController的收集這些和他們像發送到正確的對象,因此:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *t1 = [[[event allTouches]allObjects]objectAtIndex:0]; 
    CGPoint loc = [t1 locationInView:self.view]; 
    if (CGRectContainsPoint(overlay.rightToolbar.frame, loc)) { 
     overlayTouched = YES; 
     [overlay touchesBegan:touches withEvent:event]; 
    } else { 
     overlayTouched = NO; 
     [scrollView touchesBegan:touches withEvent:event]; 
    } 
} 

我有一種感覺,一個修補程序將設置工具欄爲獨立UIViews並將它們作爲子視圖添加到視圖控制器中,以便覆蓋層不佔用整個屏幕,但是如果有其他方法,我想避免這種情況。

回答

1

OK ....看起來像這個問題沒有一個簡單的答案,所以我已經解決了這個問題,正如我在問題中所說的,並將每個疊加的UIView添加爲只有幀大小的UIView它的超級視圖的大小的一小部分。

這到底是運作良好,因爲我能夠觸動的touchesBegan根據什麼認爲它是並touchesMoved和touchesEnd保持在該視圖這給了我很多在用戶交互控制的檢測。