2012-07-12 7 views
0

좋아,이 작업은 단순해야하지만 미친 듯이 보냈습니다.UIScrollView를 통한 UIView 메뉴

나는 화면의 측면과 하단에 정적 투명 도구 모음 뒤에 UIScrollView를 표시하려고합니다. 스크롤 뷰 (UIScrollView의 하위 클래스)와 오버레이 (UIView의 하위 클래스)가 모두 RootViewController의 하위 뷰가되도록 구조가 현재 설정되어 있습니다.

scrollView = [[EMDrawScrollView alloc]initWithFrame:CGRectMake(0, 0, winSize.width, winSize.height)]; 
scrollView.userInteractionEnabled = YES; 
[self.view addSubview:scrollView]; 

overlay = [[EMDrawOverlayView alloc]initWithFrame:CGRectMake(0, 0, winSize.width, winSize.height)]; 
overlay.userInteractionEnabled = NO; 
[self.view addSubview:overlay]; 

문제는 내가 overlay.userInteractionEnabled 사용하도록 설정하면 모든 터치 레이어로 이동하고있는 ScrollView를 얻을 수 있다는 것입니다. 그러나 사용자 상호 작용을 해제하면 scrollView가 제대로 작동하지만 오버레이와 상호 작용할 수 없습니다.

- (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로 도구 모음을 설정하는 것입니다 : 나는 RootViewController 이러한 수집하고 접촉을 처리하고과 같이 올바른 객체로 전송 관련하여

오버레이가 전체 화면을 차지하지 않도록 뷰 컨트롤러에 서브 뷰로 추가하십시오. 그러나 다른 방법이 있다면 이것을 피하고 싶습니다.

답변

1

OK ....이 질문에 대한 간단한 대답이없는 것처럼 보입니다. 그래서 질문에서 말했듯이이 문제를 해결하고 프레임 크기 만있는 UIView로 각 오버레이를 추가하면됩니다. 그것의 최고 전망의 크기의 조각.

이것은 내가보기에 따라 touchesBegan 터치를 감지 할 수 있었고 touchesMoved 및 touchesEnd를 가지고 있기 때문에 결국 잘 작동했습니다. 사용자 상호 작용을 제어 할 수있는보기에 남아 있습니다.

관련 문제