【问题标题】:Cancel Tap gesture on UIBarbutton in iPhone取消 iPhone 中 UIBarbutton 上的点击手势
【发布时间】:2011-01-28 04:04:06
【问题描述】:

我已将点按手势识别器添加到视图中。我的视图底部有一个图像和一个 UIToolBar,有几个 UIBarbuttons 我想取消对这些按钮的任何触摸。我正在尝试使用以下方法取消触摸。如何检测触摸是在工具栏上还是在任何栏按钮上?也没有为条形按钮定义框架...

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


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

    }
    return YES;
}

【问题讨论】:

    标签: iphone uibarbuttonitem uigesturerecognizer


    【解决方案1】:
    CGPoint location = [touch locationInView:self.view];
    if(CGRectContainsPoint(toolbar.frame, location)) { ... }
    

    这是假设工具栏和self.view 在同一个坐标空间中。如果不是,则必须使用 UIView 的坐标转换方法 (convertPoint:toView:) 来使空格匹配。

    【讨论】:

      【解决方案2】:

      按钮是第一响应者,它们的 uitouchup 或其他事件将首先触发,并且不会传播到后台视图。

      您可以对按钮进行子类化并让 touchesbegan/moved/ended 执行以下操作:

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

      让您的后台视图为他们处理所有事件,在这种情况下您的手势代码应该可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-29
        • 1970-01-01
        • 2017-04-25
        • 1970-01-01
        相关资源
        最近更新 更多