Обнаружение касаний HTML5 <video>в UIWebView на iPhone - PullRequest
4 голосов
/ 09 сентября 2010

Я хотел бы иметь возможность обнаруживать события касания / щелчка по тегу в UIWebView.Но не похоже, что он реагирует на это событие.Любые идеи?

videoElement.addEventListener('touchstart', myFunc, false);

Также может быть событие "click".

Ответы [ 2 ]

0 голосов
/ 21 января 2011

Настройте элемент видео для загрузки определенного URL-адреса при нажатии (используя onclick или просто привязку), затем реализуйте обратный вызов -webView:shouldStartLoadWithRequest:navigationType: в delegate вашего веб-просмотра, чтобы отслеживать этот URL-адрес.

0 голосов
/ 13 октября 2010

Есть способ сделать это, но это не очень красиво.

UIWebView позволяет запускать произвольный JavaScript, например, [webview stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"].Поэтому, когда пользователь нажимает на элемент videoElement, вы можете запустить javascript, который устанавливает innerHTML определенного элемента, который вы можете извлечь из этой функции.

Однако, как узнать, когда запускать эту функциюна стороне Objective-C?Ну, есть два варианта.Во-первых (хотя я бы не советовал это, поскольку это было бы медленно), вы можете настроить функцию опроса, которая запускается время от времени для проверки значения функции stringByEvaluatingJavascriptFromString:.Второй вариант, который, я думаю, вероятно, является наилучшим, заключается в создании подкласса WebView для отслеживания касаний в WebView.Таким образом, вы можете переопределить следующую функцию:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    NSString *string = [self stringByEvaluatingJavascriptFromString:@"document.getElementById('videoTapped').innerHTML"]
    if ([string isEqual:@"Something"]) {
        // do something here
    }
} 
...