2013-08-02 209 views
1

我想隱藏,當觸摸的區域CGRectMake(130,0,60,480)輕觸隱藏工具欄

不使用UIGestureRecognizer顯示工具欄,因爲它的效果我的其他意見

如果觸摸一次在該地區,工具欄應該隱藏,如果工具欄被隱藏,應顯示工具欄

我已經嘗試了本

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    { 
    if (mainToolbar.hidden == YES) { 
     mainToolbar.hidden=NO; 
    } 
    else if(mainToolbar.hidden == NO){ 
      [mainToolbar setHidden:YES]; 
    } 
    } 

但其隱藏工具欄時,觸摸到工具欄僅

感謝......

+0

你把這段代碼放在哪裏?你有沒有繼承你的工具欄? – Toploulou

+0

是的,我已經從子類 – Denny

+0

採取工具欄,那麼touchBegan方法將只在工具欄中有效。換句話說,只有當用戶觸摸工具欄時它纔會起作用。 – Toploulou

回答

1

編寫代碼在您添加工具欄的視圖。您將使用此代碼獲取觸摸的位置:

UITouch *touch = [[event allTouches] anyObject]; 

CGPoint location = [touch locationInView: touch.view]; 

,然後檢查觸摸是使用CGRectContainsPoint:功能的矩形內。

另一種方法是簡單地把一個按鈕放在所需的區域。希望這有助於

+0

使用'{} '按鈕。 – WolfLink

0

該方法爲您提供了屏幕上所有觸摸的NSSet。您可以使用它來自定義觸摸行爲。例如:

//This will change the state of whether mainToolbar is hidden or not. In the case of multiple touches, it will change the property if any touch is in the CGRect area. 
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    CGRect testRect = CGRectMake(130, 0, 60, 480); 
    for (UITouch *touch in touches) { 
     if (CGRectContainsPoint(testRect, [touch locationInView:self.view])) { 
      mainToolbar.hidden = !mainToolbar.hidden; 
     } 
    } 
} 

或者,如果你只是想,如果一個觸摸時發生的,而忽略它,如果用戶使用多個手指觸摸操作時,您將檢查爲:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    CGRect testRect = CGRectMake(130, 0, 60, 480); 
    if ([touches count] == 1) { 
     //If there is only one touch, we check for that. Otherwise, we ignore it. 
     UITouch *touch = [touches anyObject]; 
     if (CGRectContainsPoint(testRect, [touch locationInView:self.view])) { 
      mainToolbar.hidden = !mainToolbar.hidden; 
     } 
    } 
} 

你只需四個功能touchesBegan:touchesMoved:touchesEnded:touchesCanceled:就可以做一些非常酷的事情。