2017-08-03 60 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時是否可以移動光標?你做完了嗎?。還有,你如何爲被丟棄的內容製作動畫? –