pwa - ¿Cómo detectar la caída de UIWebview en iOS 11?
webview swift 4 example (2)
Tengo un UIWebView
. Estoy tratando de implementar la característica ios11
arrastrar y soltar. Cuando arrastro elementos desde Safari y los UIWebView
en mi UIWebView
, quiero saber qué método de delegado recibirá. ¿Alguna sugerencia?
Los protocolos UIDragInteractionDelegate y UIDropInteractionDelegate son lo que estás buscando.
Verifique esto también: cómo soltar imágenes en UIViewController con UIDropInteraction (Ep 1)
La mayor parte de la funcionalidad de UIWebview se implementa en una clase no documentada llamada UIWebBrowserView. Es esa vista que tiene su conjunto de propiedades ''interacciones'' y el delegado para esas interacciones se establece en el mismo UIWebBrowserView.
Dependiendo de sus necesidades, hay 3 opciones para detectar la caída:
1) Puede usar javascript en el contenido de la vista web para detectar la caída. Esto se vería así:
document.addEventListener(''drop'', function() {
// Drop detected
} ) ;
2) Puede deshabilitar las interacciones de caída en el UIWebBrowserView. Eso les permitirá propagarse a una de las vistas que contienen, y usted puede agregar sus propias interacciones allí. Eso se vería así:
webView.scrollView.subviews[0].interactions = @[] ;
Una vez que haya hecho eso, puede crear sus propias interacciones y agregarlas a la vista contenedor:
UIDropInteraction *dropInteration = [[UIDropInteraction alloc]initWithDelegate:myController] ;
[webView addInteraction:dropInteration] ;
webView.userInteractionEnabled = YES ;
Luego implementaría la funcionalidad UIDropInteractionDelegate en ''myController''
3) Puede swizzle UIWebBrowserView y reemplazar los métodos UIDropInteractionDelegate con los suyos.