iphone - порядок события касания (нажатия)

У меня есть UIView и UIWebView.

UIWebView является дочерним представлением UIView.

UIWebView содержит видео YouTube и настроен так, чтобы видео соответствовало UIWebView.

У меня есть UITapGesture, связанный с родительским UIView для одного нажатия, скажем, если пользователь один раз коснется всего представления, он вызовет A.

Таким образом, когда UIWebView загружает видео с YouTube, поверх видео появляется кнопка, ожидающая нажатия пользователем для воспроизведения. Но теперь, если я нажму кнопку, проигрывается YouTube, но также вызывается A. Вот чего я не хочу.

Как мне решить эту проблему?

Я думал, что событие касания/касания должно быть в порядке, и если кнопка нажата, оно должно поглотить событие и больше не давать UIView.

Я также попытался добавить еще один UIView под UIWebView и прикрепить этот жест к базовому представлению. Однако это все еще не работает.

Как я могу сделать, чтобы кнопка над видео на YouTube была независимой?

Благодарность


person Jackson Tale    schedule 24.08.2011    source источник


Ответы (1)


Попробуйте добавить этот код в файл .m вашего представления (если вы используете UIView, создайте его подкласс):

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    CGPoint p = [self convertPoint:point toView:webView];
    if ([webView pointInside:p withEvent:event]) {
        return [webView hitTest:p withEvent:event];
    }
    return [super hitTest:point withEvent:event];
}

Поскольку я не пробовал этот код, сообщите мне, если он не работает. Есть еще много способов справиться с ситуацией. :)

person xuzhe    schedule 24.08.2011
comment
не могли бы вы рассказать мне другой способ, кроме просмотра подкласса? - person Jackson Tale; 25.08.2011
comment
@JacksonTale Поскольку вы используете UITapGesture, вы также можете узнать, где пользователь коснулся экрана, проверить, находится ли точка в вашем UIWebView, если ответ ДА, вы можете просто вернуть функцию события касания, чтобы остановить дальнейшие действия. - person xuzhe; 25.08.2011
comment
@xuzhe, но просто возврат не означает, что событие будет передано в веб-просмотр, верно? - person Jackson Tale; 27.08.2011
comment
В обязанности UITapGesture не входит передача события в UIWebView. Итак, простой возврат в порядке. - person xuzhe; 28.08.2011