UIScrollView检测点击

时间:2012-03-04 19:26:13

标签: ios uiview uiscrollview uitapgesturerecognizer

我有一个UIScrollView,我需要能够滚动它。同时,我需要检测scrollview上的点击。我怎样才能做到这一点?

我已经尝试过添加TapGestureRecognizer而没有任何运气。还尝试了使用UIScrollViewDelegate方法的几种方法。

UIScrollView中有MPMoviePlayerController视图。

我使用以下代码添加了reconigzer

UITapGestureRecognizer *singleTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)] autorelease];
singleTap.enabled = YES;
singleTap.cancelsTouchesInView = NO;

[scrollView addGestureRecognizer:singleTap];

感谢。

3 个答案:

答案 0 :(得分:1)

尝试在滚动视图中放置一个视图,并将手势识别器和另一个视图添加到该视图中。

答案 1 :(得分:0)

解决方案:将MPMoviePlayerController的视图添加到UIScrollView时,需要在MpMoviePlayerController视图上禁用用户交互,以便UIScrollView能够捕获手势识别器。只有当您不希望使用mpmovieplayercontrollers默认菜单等进行交互时,此解决方案才有效。

答案 2 :(得分:0)

您可以在UIScrollView中捕获任何类型的手势。确保您还处理一些默认属性,例如将cancelsTouchesInView属性设置为false,默认情况下为true。还要为子视图指定一些标记,以区分选择器。 &安培;也使他们的用户互动成为现实。

例如。我在滚动视图中添加了一个图像视图,我正在启用它的用户交互,我也在更新其内容大小,

   {
           //adding images to the scroll view   
             for i in 0 ..< 4 {
          let image = UIImage(named: "img\(i).png")
          let imageView  = UIImageView(image: image)
          imageView.center = CGPoint(x: CGFloat(i) * 60 + 60/2, y: 60/2)
          imageView.tag = i
          imageView.isUserInteractionEnabled = true
          addSubview(imageView)

          let tap = UITapGestureRecognizer(target: self, action: #selector(didTapImage(_:)))
          imageView.addGestureRecognizer(tap)
        }

        contentSize = CGSize(width: 10 * 60, height:  60 + 2*10)  

}