2009-08-14 4 views
8

저는 iPhone 개발에 다소 익숙하며 아직 아무 일도하지 않았습니다. 이 같은 내 뷰 계층 : 사용자가 화면의 아무 곳이나 탭 경우탭을 감지하여 표시/숨기기 UINavigationBar

UIView - UIImageView - UIScrollView - CustomView 

이 어떻게 감지 할 그래서 나는 /이 따라 탐색 줄을 숨기 보일 수 있는가? 내 CustomView 사용자 상호 작용이 필요하지 않지만 UIScrollView 사용자가 끌려면 그냥 감추고 싶습니다.

이미 보여줄 수

/프로그래밍 방식으로 사용하여 내보기 컨트롤러에서 탐색 모음을 숨기 :

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

사전에 감사!

답변

5

UIView에서 touchesBegan 메서드를 사용하여 탭을 검색 할 수 있으므로 탭을 감지하려는 viewcontroller 뷰에 대해 UIView의 사용자 지정 하위 클래스가 있어야합니다. 그런 다음 위임자를 사용하여보기의 컨트롤러에 메시지를 보내야 navigationBar을 숨길 수 있습니다.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSUInteger numTaps = [[touches anyObject] tapCount]; 
    if (numTaps == 1) 
    { 
     [delegateController tapDidOccur]; 
    } 
} 
+0

이 작업을 수행 볼 수 UIGestureRecognizers를 사용하여 할 수있는 방법입니다. 고맙습니다. 이제는 그 사건을 대리인에게 맡기는 문제가 조금 있습니다. tapDidOccur 메서드를 선언하려면 UIScrollViewDelegate 인터페이스의 범위를 확장해야합니까? – leolobato

+0

나는 "tapDidOccur"메서드로 "tappable"프로토콜을 구현하기 위해 UIScrollView의 서브 클래스에서 @property 대리자를 오버로드하고 이제는 정상적으로 작동합니다. 감사! – leolobato

16
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showHideNavbar:)]; 
[self.view addGestureRecognizer:tapGesture]; 
[tapGesture release]; 

-(void) showHideNavbar:(id) sender { // write code to show/hide nav bar here } 

이 은 iOS4

+2

iOS 4 이상을 타겟팅 할 수 있다면 더 깔끔하고 세련된 솔루션입니다. –

+0

이것을 등록하는 가장 좋은 장소는 무엇입니까? 나는 viewDidAppear을 생각하고있다. –

+1

더 나은 내부 viewDidLoad – Mugunth