2017-08-03 45 views
6

Mam UIWebView. Próbuję wdrożyć funkcję przeciągnij i upuść ios11. Kiedy przeciągam element z Safari i upuszczam go w moim UIWebView, chcę wiedzieć, która metoda delegata zostanie wywołana. Jakieś sugestie?Jak wykryć spadek UIWebview w systemie iOS 11?

+0

Myślę, że w urządzeniu mobilnym - 1. Safari może nie zezwalać na operację przeciągania - 2. Operacja przeciągania nie może przełączać dwóch aplikacji ze sobą. Prosimy o dzielenie się informacją o tej operacji z broswersami na urządzeniach mobilnych. – Krunal

+0

Próbuję w iPadzie pro @Krunal –

Odpowiedz

3

Większość funkcjonalności UIWebView jest realizowany w nieudokumentowane klasy zwanej UIWebBrowserView. Jest to widok, który ma zestaw właściwości "interakcje", a delegat dla tych interakcji jest ustawiony na ten sam interfejs UIWebBrowserView.

W zależności od potrzeb, są 3 opcje, aby wykryć spadek:

1) można użyć JavaScript w treści widoku internetowej, aby wykryć spadek. Wyglądałoby to tak:

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

2) Można wyłączyć interakcje upuszczania w przeglądarce UIWebBrowserView. Umożliwi to im rozprzestrzenienie się w jednym z widoków zawierających i możesz tam dodawać własne interakcje. Że będzie wyglądać następująco:

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

Po wykonaniu tym, można tworzyć własne interakcje i dodać je do widoku kontenera:

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

Można by następnie wdrożyć funkcjonalność UIDropInteractionDelegate w ' myController '

3) Można przekręcić UIWebBrowserView i zamienić metody UIDropInteractionDelegate na własne.

+0

Nie sądzę, aby 2 i 3 działały. Próbuję pierwszej opcji. Jak mogę uzyskać upuszczony tekst lub obrazy w js? –

+1

Właściwie udało mi się uzyskać pracę "2" i "3", ale nie udało mi się uzyskać "1", ponieważ natknąłem się na tę samą przeszkodę, co ty. Nie mogłem określić, które obiekty zostały usunięte. Moje umiejętności obsługi javascript są ograniczone, ale podejrzewam, że można uzyskać informacje o upuszczonych obiektach za pomocą javascript. Po prostu nie wiem jak to zrobić. Z mojej strony, zdecydowałem się na "2", ponieważ jest to jedna linia, aby wyłączyć domyślne zachowanie dla kropli. Byłem nawet w stanie zachować domyślną interakcję przeciągania, sprawdzając klasy istniejących interakcji i tylko usuwając dropInteraction. –

+0

Tak Próbuję drugiej opcji, którą zasugerowałeś. Otrzymuję również dane o spadku wydajności. Czy możliwe jest przesuwanie kursora po przeciągnięciu przez UIWebView ?. Zrobiłeś to?. A także w jaki sposób animujesz odrzucaną zawartość? –