没有从UIScrollView接触到

时间:2013-05-03 06:40:34

标签: ios objective-c

我已经将UIScrollView子类化并实现了 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 其中的方法。

但是点击或按住滚动视图时没有任何反应!

编辑:我还需要使用touchesEnded方法

4 个答案:

答案 0 :(得分:2)

我认为UIScrollView有两个手势识别器。他们负责处理触摸序列,因此他们会吞下触摸事件。

使用scrollView委托方法处理拖动手势或

touchesShouldBegin:withEvent:方法inContentView:

处理滚动视图内容触摸的方法和

touchesShouldCancelInContentView:

取消它。

作为替代方案,您可以操作scrollView的panGesture识别器将事件传递给下一个响应者。

答案 1 :(得分:1)

在UIScrollView的子类中,覆盖hitTest方法,如下所示:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

  UIView *result = nil;
  for (UIView *child in self.subviews)
    if ([child pointInside:point withEvent:event])
      if ((result = [child hitTest:point withEvent:event]) != nil)
        break;

  return result;
}

答案 2 :(得分:1)

我认为你使用scrollview作为子视图。所以在这种情况下你可以使用手势因为我遇到过同样的问题。

您可以像这样使用UITapGestureRecognizer ......

-(void)viewDidLoad
{
   UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
   gr.delegate = self;
    [self.scrollView addGestureRecognizer:gr];
}
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
    // do here whatever you wanna ..........
}

答案 3 :(得分:0)

解决!

已使用LongPressedGestureRecognizer。动作方法一直被调用,直到用户持有视图。从那我可以弄清楚gestureRecognizer的状态(UIGestureRecognizerStateBegan...Ended...Cancelled