如何检测iOS 11中的UIWebview drop?

时间:2017-08-03 12:43:26

标签: ios swift uiwebview ios11

我有UIWebView。我正在尝试实施ios11拖放功能。当我从Safari拖动项目并将其放入我的UIWebView时,我想知道将调用哪个委托方法。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

UIWebview的大部分功能都是在一个名为UIWebBrowserView的未记录的类中实现的。正是这种观点有其相互作用的关系。属性集和这些交互的委托设置为相同的UIWebBrowserView。

根据您的需要,有3个选项可以检测掉落:

1)您可以在Web视图的内容中使用javascript来检测丢弃。这看起来像是:

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 ;

然后,您将在' myController'

中实现UIDropInteractionDelegate功能

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

答案 1 :(得分:2)