Есть ли способ получить обратный вызов 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 вместо простой ссылки.
