2011-12-05 13 views
3

私はあなたがGitHubの上で見ることができるオープンソースマガジンEngine上で働いている:私はMenuPanel呼ばれてきたのUIViewでUIToolbarを設定したUIToolbarを妨害するUIGestureRecognizers?

https://github.com/interactivenyc/Defrag

。何らかの理由で、UIToolbar内のUIBarButtonItemsがアクションを適切に呼び出していません。ここで私は、ボタンのために使用している構文は次のとおりです。どこでも私は私の画面上でクリックすることで起こっは何

UIBarButtonItem *homeItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"home.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonClicked:)]; 

は、UITapGestureRecognizerは私のメインのUIViewControllerで宣言されたが代わりに呼び出されています。これは私のメインのUIViewController内のコードのこのブロックで設定を取得します。

- (void)setupGestureRecognizers { 

//NSLog(@"setupGestureRecognizer NEW"); 

UISwipeGestureRecognizer *swipeRecognizer; 

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)]; 
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionRight; 
[self.view addGestureRecognizer:swipeRecognizer]; 
[swipeRecognizer release]; 

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)]; 
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft; 
[self.view addGestureRecognizer:swipeRecognizer]; 
[swipeRecognizer release]; 

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)]; 
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionUp; 
[self.view addGestureRecognizer:swipeRecognizer]; 
[swipeRecognizer release]; 

swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)]; 
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionDown; 
[self.view addGestureRecognizer:swipeRecognizer]; 
[swipeRecognizer release]; 

UITapGestureRecognizer *tapRecognizer; 

tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[self.view addGestureRecognizer:tapRecognizer]; 
[tapRecognizer release]; 
} 

私は、私はこれをやろうとしている方法と概念的に間違っている、かなり基本的な何かを持っていると確信しています。誰かが私にこの問題をどのように修正できるか教えてもらえますか?

参考のために、あなたは私のメインDefragViewControllerを見ることができます:ここでのUIView::ここのUIViewController:

https://gist.github.com/1431722

そして、私のMenuPanelを

gist.github.com/1431728

答えて

5

私自身の質問を解決しました。

私はこのような任意のUIToolbarからタッチを無視するように私のUIViewControllerを教えていた:

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

    //ignore any touches from a UIToolbar 

    if ([touch.view.superview isKindOfClass:[UIToolbar class]]) { 
     return NO; 
    } 

    return YES; 
} 
+1

は、スタックオーバーフローへようこそ!あなたの答えを受け入れたものとしてマークして、他の人に解決策があることを知らせるようにしてください。 –

関連する問題