【问题标题】:iphone - the order of the touch (tap) eventiphone - 触摸(点击)事件的顺序
【发布时间】:2011-11-03 01:23:02
【问题描述】:

我有一个 UIView 和一个 UIWebView。

UIWebView 是 UIView 的子视图。

UIWebView 包含一个 youtube 视频,并设置为让视频适合 UIWebView。

我有一个与父 UIView 关联的 UITapGesture 用于单击,例如,如果用户单击整个视图,它将调用 A。

所以,当 UIWebView 加载 youtube 视频时,视频顶部有一个按钮等待用户点击播放。但是现在,如果我单击按钮,则会播放 youtube,但也会调用 A。这是我不想要的。

我该如何解决?

我认为触摸/点击事件应该是有序的,如果单击按钮,它应该吸收事件并且不再提供 UIView。

我还尝试在 UIWebView 下添加另一个 UIView,并将该手势附加到底层视图。但是还是不行。

如何让 youtube 视频上的按钮独立?

谢谢

【问题讨论】:

    标签: iphone uiwebview youtube touch uigesturerecognizer


    【解决方案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];
    }
    

    由于我没有尝试此代码,请告诉我它是否不起作用。处理这种情况的方法还有很多。 :)

    【讨论】:

    • 你能告诉我除了子类视图之外的另一种方式吗?
    • @JacksonTale 由于您使用的是UITapGesture,您还可以获取用户在屏幕上点击的位置,检查该点是否在您的UIWebView中,如果答案是YES,您可以返回您的点击事件函数来停止进一步的操作。
    • @xuzhe,但是简单的返回并不意味着它会将事件转移到webview,对吧?
    • 将事件传输到 UIWebView 不是 UITapGesture 的责任。所以,简单的返回就可以了。
    猜你喜欢
    • 2023-03-27
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多