2011-02-03 13 views
26

こんにちは私は、OpenGLのビューを持って、私はタブバーがあります。私は画面上の異なる3Dオブジェクトをタップするためにタップ認識装置を使用しています。タブバーにはボタンがありますが、タップ認識機能がこれらのタップをキャッチしているため動作しません。これをどうやって止めるのですか?私はデバッグするとき、それは常にtrueを返しますので、私は何とか間違っclassessを比較すると思うどのようにしてUITapGestureRecognizerがすべてのタップをキャッチしないようにしますか?


- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ([touch.view isKindOfClass:[UIBarButtonItem class]]) return FALSE; 
    return TRUE; 
} 

:私はすでにこれを試してみました。

+3

if文は、決してfalseを返すことはできません。ボタンはビューではありません...しかし、デバッガのブレークポイントを介して、ビューが異なるタップ位置にあることを確認できます。 – Axel

+0

ああ..私は 'UIBarButtonItem'が' UIView'ではないことに気付きました:)ありがとう。 –

答えて

27
 
    if ([touch.view.superview isKindOfClass:[UIToolbar class]]) return FALSE; 

これは私が動作させる方法です。結局のところ、スーパービューはUIToolbarです。おそらくUIBarButtonIttemis a viewです。

+0

これは、ジェスチャ認識プログラムのビューでヒットテストが失敗した場合に機能します。明確にするために、私はUITableView内で作業していました。ジェスチャの場所は '{0、contentOffset - someConstant}'として報告されていました。タッチの視点を確認することは良い解決策です。ありがとう。 – Justin

32

それとも[singleTap setCancelsTouchesInView:NO]を行うことができます。例:

+1

Interface Builderで、View_でキャンセルされている場合もあります。すばらしいです! –

+0

働いたものだけ。そして、魅力のように、私は追加するかもしれません!コードの残りの部分を乱さないでください。すごい! – StinkyCat

+0

すばらしい答えありがとう! –