2017-08-03 63 views
6

我有一个UIWebView。我正在尝试执行ios11拖放功能。当我从Safari拖动项目并将其放入我的UIWebView中时,我想知道将调用哪个委托方法。有什么建议么?如何在iOS 11中检测UIWebview放置?

+0

我认为,在移动设备中 - 1. Safari可能不允许拖动操作 - 2.拖动操作无法相互切换两个应用程序。请分享你曾经使用过移动设备的网页浏览器看过这个操作的任何参考文献 – Krunal

+0

我正在尝试iPad Pro @Krunal –

回答

3

大多数的UIWebView的功能被称为UIWebBrowserView无证类实现。它的'交互'属性集和这些交互的委托的视图被设置为同一个UIWebBrowserView。

根据您的需求,有3个选项来检测降:

1)你可以使用JavaScript的Web视图的内容来检测的下降。这看起来像这样:

document.addEventListener('drop', function() { 
    // Drop detected 
}) ; 

2)您可以禁用UIWebBrowserView中的拖放交互。这将允许他们传播到其中一个包含视图,并且您可以在其中添加自己的交互。这将是这样的:

webView.scrollView.subviews[0].interactions = @[] ; 

一旦你做到了这一点,在你可以创建自己的互动,并将它们添加到容器中的观点:

UIDropInteraction *dropInteration = [[UIDropInteraction alloc]initWithDelegate:myController] ; 
[webView addInteraction:dropInteration] ; 
webView.userInteractionEnabled = YES ; 

你会然后实现在UIDropInteractionDelegate功能“ myController'

3)你可以改变UIWebBrowserView并用你自己的替换UIDropInteractionDelegate方法。

+0

我不认为2和3会工作。我正在尝试第一个选项。我如何才能在js中获取丢弃的文本或图像? –

+1

事实上,我能够同时获得'2'和'3'的工作,但是我无法获得'1'的工作,因为我碰到了和你一样的绊脚石。我无法确定被丢弃的对象。 我的javascript技能是有限的,但我怀疑可以使用javascript获取有关放置对象的信息。我只是不知道该怎么做。 就我而言,我决定'2',因为它是一行来禁用drop的默认行为。我甚至可以通过检查现有交互的类并仅删除dropInteraction来保留默认的拖动交互。 –

+0

是的,我正在尝试你建议的第二个选项。我也正在获取执行下降的数据。拖动UIWebView时是否可以移动光标?你做完了吗?。还有,你如何为被丢弃的内容制作动画? –