¿Hay alguna forma de obtener una devolución de llamada a objective-c cuando se ha detectado un determinado evento en un UIWebView? ¿Puede Javascript enviar una devolución de llamada a Objective-C?Javascript en la devolución de llamada de UIWebView a C/Objective-C
Respuesta
Actualización: ya no utilices UIWebView. Use WKWebView, o mejor aún (si se ajusta a sus necesidades y está compilando para iOS 9), un Controlador de Safari View.
Pero si tiene que usar UIWebView, en su delegado UIWebView, proporcionar una implementación para webView:shouldStartLoadWithRequest:navigationType:
En su archivos HTML o Javascript, añadir funciones que envían las direcciones URL a un esquema personalizado (por motivos de legibilidad, el ISN combinación personalizada no se requiere). Todas las URL enviadas se transferirán a la implementación del método Objective-C y luego podrá hacer lo que desee.
Sólo para ilustrar la solución por "bpapa" con el código real:
ADVERTENCIA: código no probado
implementar este método en el delegado del UIWebView ...
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ([[[inRequest URL] scheme] isEqualToString:@"callback"]) {
// Do something interesting...
return NO;
}
return YES;
}
.. .entonces ponga un enlace en la webwieb como este:
<a href="callback:whatever">Click me</a>
Y debería activar su código de devolución de llamada. Obviamente, podría desencadenarlo con un javascript en lugar de un simple enlace.
- 1. JavaScript interrumpido en la devolución de llamada "Iniciar carga" de UIWebView
- 2. Espere devolución de llamada en javascript
- 3. Llamar a una devolución de llamada en javascript
- 4. Qt QWEBview JavaScript de devolución de llamada
- 5. devolución de llamada de animación jquery - cómo pasar parámetros a la devolución de llamada
- 6. Javascript OOP - perdido esto en la devolución de llamada asincrónica
- 7. SignalR Javascript devolución de llamada no funciona
- 8. ASP.NET UpdatePanel Javascript Devolución de llamada
- 9. devolución de llamada en C#, orden de llamada y devolución
- 10. Javascript para la devolución de llamada de bucle?
- 11. JavaScript devolución de llamada después de la función
- 12. Reemplazar Javascript Confirmar() mientras conserva la devolución de llamada
- 13. Eventos de Javascript vs. Devolución de llamada En MVC Scenario
- 14. ¿cómo puedo activar la devolución de llamada de error ajax en la devolución de llamada exitosa?
- 15. DFP posterior a la prestación de devolución de llamada
- 16. iOS UIWebView Javascript - insertar datos: ¿recibe devoluciones de llamada?
- 17. ¿Pasa los argumentos a la devolución de llamada ajax onreadystatechange?
- 18. Devolución de llamada en C#
- 19. Devolución de llamada en C#
- 20. Funciones de devolución de llamada de Javascript y recursión
- 21. Funciones de devolución de llamada de javascript con ajax
- 22. devolución de llamada en android?
- 23. Devolución de llamada asincrónica
- 24. Async Cargar archivos de JavaScript con devolución de llamada
- 25. valor de retorno javascript UIWebView
- 26. Llamar a MiniDumpWriteDump con devolución de llamada
- 27. función y parámetros de devolución de llamada javascript
- 28. Pausar la ejecución de JavaScript en UIWebView
- 29. Implementando la devolución de llamada del servicio a la actividad
- 30. pasando el índice de forzado a la función de devolución de llamada ajax (JavaScript)
¿Hay algún ejemplo de código para ilustrar esto? – nishantcm
¿Hay alguna otra opción para lograr esto? (por ejemplo, con las versiones más nuevas de iOS)? –
@ lisérgico-ácido No me he equivocado mucho con WebViews en un tiempo, pero me imagino que no, ya que esta es una solución bastante agradable. A menos que de alguna manera pueda vincular un bloque a eventos JS (consulte los documentos de UIWebView). iOS 7 agregó JavaScriptCore, pero no estoy seguro de que sea útil aquí. – bpapa