【问题标题】:Swipe functionality on UIwebview iPhone development -UIwebview iPhone 开发上的滑动功能 -
【发布时间】:2009-11-19 14:00:03
【问题描述】:

我想为我的 iPhone 应用程序捕获用户的滑动事件。

根据苹果,可以从 touchesMoved:withEvent: 轻松获取。

我有 UIView,它在顶部包含导航栏,在底部包含工具栏,在它之间有 uiwebView。

现在,当用户滑动时,我想捕获此事件,但我无法获取 UIwebView 的用户触摸事件。

我的视图控制器中有 touchesMoved 事件,我在哪里写这个触摸?

请帮帮我..

【问题讨论】:

  • 您是否可以多说一下您拥有的功能以及它在做什么和不做什么?如果我不得不猜测,您期望控制器注册触摸,实际上是 webview 本身正在被“触摸”。
  • 在默认的事件传递周期中,如果视图没有响应触摸(Moved/Started/Ended/Cancelled)或将它们传播到下一个响应者,则视图控制器会注册触摸。然而,在这种情况下,UIWebView 已经处理了这些,因此不会调用视图控制器。

标签: iphone cocoa-touch


【解决方案1】:

您可以继承 UIWebView,只覆盖 touchesMoved、touchesStarted、touchesEnded 和 touchesCancelled 方法。在这些方法中进行滑动检测,如果调用不属于滑动,则让它们调用 [super ...]。

这里的问题可能是检测到滑动不会阻止 UIWebView 的默认行为。超类还需要知道触摸何时开始、移动、结束或取消。这样它就能够在委托上执行正确的选择器。

因此,当您覆盖这些方法并且不调用 [super ...] 时,或者仅当它不是滑动时,UIWebView 本身的行为可能是未定义的。这就是为什么我提到您应该始终在自己的实现中调用 [super ...]。

编辑:所以不喜欢我在小于和大于括号之间放置字符串。所以在上面,凡是我提到的[super ...],请在点上填写touchesStarted、touchesMoved、touchesEnded和touchesCancelled ....

【讨论】:

  • 感谢您的帮助。你能给我一些教程或链接或代码库吗?
  • 最后我设法在用户触摸 uiwebview 时滑动。但由于这个原因,我无法缩放或滚动 uiwebview。请帮帮我。
  • 记得在你自己的方法实现中调用 [super touchesMoved]、[super touchesStarted]、[super touchesEnded]、[super touchesCancelled]!
猜你喜欢
  • 1970-01-01
  • 2020-08-27
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多