如何将UIScrollView的子视图中的触摸事件传递给它的superview

时间:2012-03-07 08:38:16

标签: iphone uiscrollview touch-event

我在窗口上有三个视图。 UIView包含UIScrollView,而UIScrollView包含UILabel。所有这些视图都是320 * 460。 现在我想在UILabel上处理长按事件并将tap事件传递给UIView。 我改写了lable的touchesEnded:获得新闻发布时间。 如果时间足够短,我使用[[self nextResponder] touchesBegan:touches withEvent:event]来传递它。 但是,即使我重写UIScrollview并将[[self nextResponder] touchesBegan:touches withEvent:event]添加到它,UIView也无法重现touchesBegan事件。 并且,如果我为UIScrollView设置了userInteractionEnabled = NO,则UIView会获取被触摸的Began,并且UILabel无法重新获取它。

如何在UILabel中首先获取触摸事件,并在需要时将其传递给UIView。

感谢。

2 个答案:

答案 0 :(得分:0)

尝试使用UITapGestureRecognizer在UIScrollView中检测touuch事件

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

您将接触到:

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

答案 1 :(得分:0)

我这样理解你的问题。

  1. 你需要在UiLabel长按。
  2. 你需要在UIView中检测触摸。
  3. 你在UIView和UILabel之间有滚动视图。

    1. 在UILabel中添加UILongpressGesture。 (看here
    2. 从UIscrollview传递触摸。