2012-01-22 7 views
0

ページングを有効にしたUIScrollviewがあります。このスクロールビューには3つのビュー(ページ)があります。上部にナビゲーションバーを表示したり非表示にしたりするスクロールビューの親ビューにタップジェスチャーがあります。TouchUpInsideイベントを親ビューに渡さずにUIButtonに渡す方法はありますか?

問題: ボタンの1つに、ボタンを追加します。しかし、問題は、これらのボタンをタップするたびに、表示/非表示のナビゲーションバーメソッドも起動されるということです。スクロールビューの親ビューではなく、これらのボタンにのみタッチを渡す最善の方法は何ですか?

答えて

1

NJonesは正しい方向にありますが、彼の答えにはいくつか問題があると思います。

スクロール表示でボタンをタッチしたとします。ジェスチャー認識者の代理人で

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch { 

    UIView *gestureView = recognizer.view; 
    // gestureView is the view that the recognizer is attached to - should be the scroll view 

    CGPoint point = [touch locationInView:gestureView]; 
    UIView *touchedView = [gestureView hitTest:point withEvent:nil]; 
    // touchedView is the deepest descendant of gestureView that contains point 

    // Block the recognizer if touchedView is a UIButton, or a descendant of a UIButton 
    while (touchedView && touchedView != gestureView) { 
     if ([touchedView isKindOfClass:[UIButton class]]) 
      return NO; 
     touchedView = touchedView.superview; 
    } 
    return YES; 
} 
+0

のように、を実装してください。私は彼がどのようにボタンを複数のと言ったのか迷ったTisk tisk。私の答えは、私の他の回答の1つからコピーされました。そこでは、除外する1つのビューでした。これは倍数のほうがはるかに優れています。 – NJones

+0

私は今これを試してみるつもりです。不思議なことに、私はこれについてStackoverflowから通知を受けていませんでした。しかし、これは堅実なソリューションのように見えます。返信してくれてありがとう! – Sumit

関連する問題