2011-01-27 85 views
0

我添加了點擊手勢識別器的視圖。我的視圖有一個圖像和一個UIToolBar在底部有幾個UIBarbuttons我想取消對這些按鈕的任何接觸。我正嘗試使用以下方法取消觸摸。如何檢測觸摸是否在工具欄或任何欄按鈕上?邊框也沒有爲欄按鈕定義...取消在iPhone的UIBarbutton點按手勢

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


    if (gestureRecognizer == tapRecognizer) { 
    if (touch.view==barbutton/*toolbar or bar button item*/) 
    { 
    return NO; 
    } 

    } 
    return YES; 
} 

回答

1
CGPoint location = [touch locationInView:self.view]; 
if(CGRectContainsPoint(toolbar.frame, location)) { ... } 

這是假設的工具欄和self.view在同一個座標空間。如果沒有,你將不得不使用UIView的座標轉換方法(convertPoint:toView:)使空格匹配。

0

按鈕是第一響應者,他們的uitouchup或其他事件將首先觸發,並不會傳播到後臺視圖。

你可以繼承你的按鈕,並具有的touchesBegan /移動/結束做到:

[self.nextResponder touchesBegan:touches withEvent:event]; 

有您的支持視圖處理他們爲他們的所有事件在這種情況下,你的動作代碼應該工作。