【问题标题】:UIWebView custom UIActionSheet menu when long press on a link长按链接时的 UIWebView 自定义 UIActionSheet 菜单
【发布时间】:2015-04-15 04:03:47
【问题描述】:

长按 UIWebView 上的链接时,我正在实现自定义菜单。

为了防止 iOS 默认菜单,我正在使用:

-webkit-touch-callout:'none'

在 iOS 6、7 中一切正常:显示我的自定义菜单而不是 UIWebView 默认。但在 iOS 8 中,发生了一种奇怪的行为。

在 iOS 8 中,显示我自己的菜单后,我释放触摸,并且链接正在加载到 UIWebView 中。

我继承了 UIWindow,重写了 sendEvent: 并看到了不同:

  • 在 iOS 6、7 中:显示我自己的菜单后,发送了一个触摸取消。

  • 在 iOS 8 中:没有任何反应。但是当我释放触摸时,触摸端是 发送并触发链接点击。

当我的菜单开始显示时,我尝试从 javascript 触发 touchcancel,但没有成功。

这种情况有什么解决方法吗?

【问题讨论】:

  • 大卫,我尝试了你的项目并按照自述文件的说明长按了黄色背包,但我没有看到自定义的警报消息。

标签: ios ios8 uiwebview uiactionsheet


【解决方案1】:

对于那些将来可能会担心的人,我设法通过一个棘手的 hack 克服了这种情况:

CGPoint currentOffset = webview.scrollView.contentOffset;
[webview.scrollView setContentOffset:CGPointMake(currentOffset.x, currentOffset.y +1) animated:NO];
[webview.scrollView setContentOffset:currentOffset animated:NO];

【讨论】:

  • 在替换长按手势时防止点击发生的许多方法中,这是唯一有效的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
相关资源
最近更新 更多