子视图中的触摸检测

Posted

技术标签:

【中文标题】子视图中的触摸检测【英文标题】:Touch Detection in subviews 【发布时间】:2012-10-22 10:43:33 【问题描述】:

我有一个视图,其中有一个滚动视图。我想检测触摸开始、移动等方法。我使用了这些方法。这些方法在滚动视图之外工作正常,但在滚动视图内部不起作用。告诉我为什么它不起作用以及解决方案是什么。

【问题讨论】:

你加scrollView.userInteractionEnabled=YES; @Unknown, userInteractionEnabled=YES 默认为UIScrollView 是的,默认启用用户交互。 【参考方案1】:

您必须继承 UIView(作为 MyUIView)并实现触摸委托。

然后将 MyUIView 添加到 UIScrollView

例如:

   @interface MyUIView : UIViewController 

   
   @end

  @implementation MyUIView

      //implement touch delegate here
   

在主视图中添加这一行

MyUIView *myUIView = [[MyUIView alloc] init];
myUIView.userIntarctionEnabled = YES;
[yourScrollView addSubView:myUIView.view];

注意:您可以使用UIGustures 代替子分类。 UIGestureRecognizer 类可用于帮助检测和响应 ios 设备上常见的各种 UI 手势

【讨论】:

该类是视图控制器,我通过情节提要做了同样的事情。 我也使用了 UIGustures,但它们无法帮助我检测移动、开始等。 然后子类 UIViewController 和 UIViewController.view 作为你的滚动条的子视图【参考方案2】:

使用convertPoint: toView: 方法。

CGPoint *point = [yourView convertPoint:touchPoint toView:yourScrollView];

【讨论】:

以上是关于子视图中的触摸检测的主要内容,如果未能解决你的问题,请参考以下文章

在不影响子视图的情况下检测整个应用程序中的 3 根手指触摸

检测 UIButton 触摸子视图

iPhone - 检测对 UITableViewCell 子视图的触摸

使用 CAAnimation 检测正在动画的 uiview 子视图的触摸

目标c:从视图/图像/按钮外部开始触摸时检测触摸开始/向下

检测 UITableViewCell 子视图内的触摸