触摸可隐藏工具栏

时间:2013-08-02 08:27:37

标签: iphone ios uitoolbar uitouch

我想在触摸区域时隐藏并显示工具栏 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];
    }
  }

但仅在触摸工具栏时隐藏工具栏

感谢......

2 个答案:

答案 0 :(得分:1)

在添加工具栏的视图中编写代码。您将使用以下代码获取触摸位置:

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

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

然后使用CGRectContainsPoint:功能检查触摸是否在你的矩形内。

另一种方法是在所需区域上放置一个按钮。希望这有帮助

答案 1 :(得分: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:四个函数,您就可以做一些非常酷的事情。