我有一个 UIWebView
。我正在尝试实现 iOS11
的拖放功能。当我从Safari中拖动项目并将其放在我的 UIWebView
中时,我想知道哪个委托方法会被调用。有什么建议吗?
UIWebview的大部分功能都是在一个名为UIWebBrowserView的未记录类中实现的。该视图设置了其“交互”属性,并将这些交互的委托设置为同一UIWebBrowserView。
根据您的需求,有三个选项来检测拖放:
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方法替换为自己的方法。