子视图中的触摸检测
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];
【讨论】:
以上是关于子视图中的触摸检测的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - 检测对 UITableViewCell 子视图的触摸