检测UIScrollView内的UIView上的触摸,最好禁用交互

时间:2012-10-22 22:04:13

标签: objective-c ios xcode cocoa-touch uiscrollview

我有一个UIScrollView,里面有一些UIViews。 我想要做的是抓住触摸/触摸UIViews的触摸事件。

我遇到的问题是UIScrollView似乎吞下了所有的触摸事件,特别是如果你在UIView上持有太长时间。

我最好希望UIScrollView禁用userInteraction,因为它会自动滚动。

这可能吗?

我已经尝试了对UIViews进行子类化,但从未调用过触摸事件。

2 个答案:

答案 0 :(得分:4)

您可以在tapGesture附加scrollview,其中包含以下内容:

   UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureUpdated:)];
   tapGesture.delegate = self;
   tapGesture.numberOfTapsRequired = 1;
   tapGesture.numberOfTouchesRequired = 1;
   [self addGestureRecognizer:_tapGesture];

然后在您的- (void)tapGestureUpdated:(UITapGestureRecognizer *)tapGesture方法中,您有责任确定触摸的位置,并找出是否在您的某个子视图中进行了拣选。然后,您可以在委托上调用一个方法,该方法通知已触摸特定视图。

答案 1 :(得分:1)

也许重新排序您的视图,以便具有与之关联的触摸识别器对象的视图是应用程序识别的内容。将其在文档大纲中移动到顶部(滚动视图)