UIScrollView 的触摸事件

Posted

技术标签:

【中文标题】UIScrollView 的触摸事件【英文标题】:Touches event for a UIScrollView 【发布时间】:2013-02-05 10:00:37 【问题描述】:

如何获取 。我有一个 UIViewController,我在 viewController 中放置了一个 scrollView。我需要将 imageViews 添加到 scrollView,如果单击特定图像,它应该重定向到其相应的 viewController。 我知道如何将触摸事件添加到 UIViewController。但这不适用于滚动视图。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

    UITouch *touch= [touches anyObject];
    if ([touch view] == img1)
    

        ViewController2 *viewController2=[[ViewController2 alloc]initWithNibName:@"ViewController2" bundle:nil];
        [self presentViewController: viewController2 animated:YES completion:nil];



    

如何获取滚动视图的触摸事件?

【问题讨论】:

***.com/questions/14785395/… 【参考方案1】:

这样做的唯一方法是创建自定义UIScrollView 您的自定义UIScrollView 将是UIScrollView 的子类。

还有更多选项,您可以查看this

【讨论】:

你能告诉我怎么做吗?我已经提到了你提供的链接,但他在哪里创建了子类?有一个视图的所有事件 @NikhatAfshan : 1. 创建 UIScrollView 的子类 2. 覆盖 Touches 结束方法 @NikhatAfshan :检查此iphonedevsdk.com/forum/iphone-sdk-development/…【参考方案2】:

设置如下:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scrollView addGestureRecognizer:singleTap];    

and you get the touch in:

- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
   
    CGPoint touchPoint=[gesture locationInView:scrollView];
  

【讨论】:

是的,我们会得到接触点(宽度和高度)。你能告诉我,如果接触的事件是 image1 或 image2,我怎么能得到?【参考方案3】:

您可以使用ScrollViewDelegate,并且可以使用“ScrollViewDidScroll”函数来获取scrollview滚动事件。

设置点击手势识别器:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scrollView addGestureRecognizer:singleTap];   



- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
   
    CGPoint touchPoint=[gesture locationInView:scrollView];
  

【讨论】:

是的,我们会得到接触点(宽度和高度)。你能告诉我,如果接触的事件是 image1 或 image2,我怎么能得到? 您将获得 X 和 Y 轴,据此,您可以找出放置图像的位置是图像 1 还是图像 2 当我点击图片中间时,我得到了 x=283 和 y=228。当我点击图片左侧时,我确实得到了一些其他位置。那么我该如何比较图片在某个区域内? 您不需要将图像与区域进行比较,但您需要根据所点击的区域执行任务。 是的,我的图像尺寸是 (217,257,89,82)。当我点击图像的各种点时,我会得到单独的 x 和 y 接触点。我需要单独编写所有要访问的点吗同一个 ViewController?

以上是关于UIScrollView 的触摸事件的主要内容,如果未能解决你的问题,请参考以下文章

以 UIScrollView 作为子类的 UIView 不接收触摸事件

目标 C:检测 UIScrollView 上的触摸事件

将触摸事件从 UIVew 传输到 UIScrollView

嵌入在 UIScrollview 中的 UIWebview 中的 Javascript 触摸事件

UIScrollView 触摸和监听事件

UIWebView 在 UIScrollView 内消耗触摸事件