ios - 长按链接时的 UIWebView 自定义 UIActionSheet 菜单

标签 ios ios8 uiwebview uiactionsheet

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

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

-webkit-touch-callout:'none'

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

在 iOS 8 中,在显示我自己的菜单后,我松开触摸,然后在 UIWebView 中加载链接。

我将 UIWindow 子类化,覆盖 sendEvent: 并查看不同之处:

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

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

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

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

最佳答案

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

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

关于ios - 长按链接时的 UIWebView 自定义 UIActionSheet 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29641387/

相关文章:

ios - 当应用程序处于后台且静音模式打开时需要播放声音

ios - 锁定屏幕与模态兼容

objective-c - UIWebView 模拟器突然不工作了

iphone - 使用 UIWebView 进行单元测试

ios - 如何在 UICollectionView 上动态实现 Sections?

ios - 为什么我的叠加线没有产生我在基于极坐标公式(swift,ios)的 map 中所期望的结果?

ios - 即使在设置中禁用了IDFA,也始终可以访问获取IDFA iOS 8

ios - AutoLayout 限制 View 位于键盘正上方

swift - NSURLSession/NSURLConnection WebView.loadHTMLString HTTP 加载失败(kCFStreamErrorDomainSSL,-9843)

ios - 在 UITabBarController 中添加 UIScrollView