【问题标题】:Why does touchesBegan stop working when UIImageView in placed inside a UIScrollView?当 UIImageView 放在 UIScrollView 中时,为什么 touchesBegan 停止工作?
【发布时间】:2010-12-31 00:55:48
【问题描述】:
UIView -> UIImageView

我知道我的工作还不错,因为我可以点击我的UIImageView 并在我的touchesBegan 方法中看到NSLog() 语句。

UIView -> UIScrollView -> UIImageView

我将相同的UIImageView 拖到UIScrollView 中,当我点击UIImageView 时,touchesBegan 不再被调用。 (我没有更改任何其他内容。所有相同的连接、方法和代码保持不变。)

为什么touchesBegan 不再起作用?我该怎么做才能让它再次工作?

【问题讨论】:

    标签: iphone xcode interface-builder uiscrollview uiimageview


    【解决方案1】:

    添加 uitapgesture 获取事件

    代码是

      UITapGestureRecognizer *ges11=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Handeltap:)];
      [imagename addGestureRecognizer:ges11];
    

    创建一个名为“Handeltap”的动作,U 将在那里被调用。

    【讨论】:

      【解决方案2】:

      默认情况下UIImageView 不处理用户手势。 将 UIImageView 实例的 userInteractionEnabled 设置为 YES

      【讨论】:

        【解决方案3】:

        查看 UIScrollView 的文档。

        因为滚动视图没有滚动条,所以它必须知道触摸是表示滚动意图还是跟踪内容中的子视图的意图。为了做出这个决定,它通过启动一个定时器来临时拦截一个触摸事件,并在定时器触发之前,查看触摸的手指是否有任何移动。如果计时器在位置没有显着变化的情况下触发,则滚动视图将跟踪事件发送到内容视图的触摸子视图。如果用户在计时器结束之前将手指拖得足够远,则滚动视图会取消子视图中的任何跟踪并自行执行滚动。子类可以覆盖touchesShouldBegin:withEvent:inContentView:pagingEnabledtouchesShouldCancelInContentView: 方法(由滚动视图调用)来影响滚动视图处理滚动手势的方式。

        我还建议阅读Scroll View Programming Guide

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-05
          • 1970-01-01
          • 1970-01-01
          • 2011-11-24
          相关资源
          最近更新 更多