2017-08-03 13 views
6

私はUIWebViewです。私はios11ドラッグアンドドロップ機能を実装しようとしています。 Safariから項目をドラッグしてUIWebViewにドロップすると、どのデリゲートメソッドが呼び出されるかを知りたいと思います。助言がありますか?iOS 11のUIWebviewドロップを検出するにはどうすればよいですか?

+0

私は、モバイルデバイス - 1と思います。Safariはドラッグ操作を許可していない可能性があります。 - 2.ドラッグ操作で2つのアプリケーションを切り替えることはできません。この操作をモバイルデバイスのウェブブラウザで参照してください。 – Krunal

+0

私はiPadプロで試しています@Krunal –

答えて

3

のUIWebViewの機能のほとんどがUIWebBrowserViewと呼ばれる文書化されていないクラスで実装されています。その 'インタラクション'プロパティが設定されているビューとそのインタラクションのデリゲートは、同じUIWebBrowserViewに設定されています。

1)あなたがドロップを検出するために、Web表示の内容ではJavaScriptを使用することができます。

必要に応じて、ドロップを検出するための3つのオプションがあります。これは次のようになります。

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

2)UIWebBrowserViewでドロップ操作を無効にすることができます。これにより、それらのビューを含むビューの1つに伝播させることができます。そこに独自のインタラクションを追加できます。あなたがあなた自身の対話を作成し、コンテナビューに追加することができ、ことをやったら

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を使用してドロップされたオブジェクトに関する情報を取得することは可能でしょうか。私はちょうどそれを行う方法を知らない。 私は、ドロップのデフォルトの動作を無効にするために1行であるため、 '2'に定住しました。私は既存のインタラクションのクラスをチェックし、dropInteractionだけを削除することによって、デフォルトのドラッグインタラクションを保持することさえできました。 –

+0

はい私はあなたが提案した2番目のオプションを試しています。私はまた、データを実行中に落としています。 UIWebViewをドラッグするとカーソルを移動できますか?あなたはそれをやりましたか?また、どのようにコンテンツをアニメートするのですか? –

関連する問題