Есть ли способ получить обратный вызов objective-c, когда определенное событие было обнаружено в UIWebView? Может ли Javascript отправлять обратный вызов на Objective-C?
Javascript в обратном вызове UIWebView для C/Objective-C
Ответ 1
Обновление - больше не используйте UIWebView. Используйте WKWebView или еще лучше (если он соответствует вашим потребностям и вы создаете для iOS 9), Safari View Controller.
Но если вы должны использовать UIWebView, в вашем делете UIWebView, выполните реализацию для webView:shouldStartLoadWithRequest:navigationType:
В ваших файлах HTML или Javascript добавьте функции, которые отправляют URL-адреса на пользовательскую схему (для удобства чтения пользовательская схема не требуется). Все отправленные URL-адреса будут переданы в вашу реализацию метода Objective-C, а затем вы сможете сделать то, что хотите.
Ответ 2
Просто, чтобы проиллюстрировать решение с помощью "bpapa" с фактическим кодом:
ПРЕДУПРЕЖДЕНИЕ: непроверенный код
Внедрить этот метод в делегат UIWebView...
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( [[[inRequest URL] scheme] isEqualToString:@"callback"] ) {
// Do something interesting...
return NO;
}
return YES;
}
... затем поместите ссылку в webwieb следующим образом:
<a href="callback:whatever">Click me</a>
И он должен активировать ваш обратный код. Очевидно, вы можете запустить его с помощью javascript вместо простой ссылки.