2009-08-14 10 views
8

私はiPhone開発にちょっと新しく、まだ何も触れていない。 マイビュー階層は、このような:私は/それに応じて、ナビゲーションバーを隠すことができますので、ユーザは、画面上の任意の場所にタップした場合、私は検出するにはどうすればよいタップを検出して表示/非表示を切り替えるUINavigationBar

UIView - UIImageView - UIScrollView - 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

UIScrollViewのサブクラスで@propertyデリゲートをオーバーライドして、 "tapDidOccur"メソッドで "タップ可能な"プロトコルを実装しました。ありがとう! – 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

より優れた内部ビューのDidLoad – Mugunth

関連する問題