0

背景:我需要查看应用程序中发生的每个 UITouch,并查看 UITouch 是否不在某个 UIImageView 内。

WildcardGestureRecognizer 看起来很有前途,我试了一下。(代码在这里): 如何拦截 MKMapView 或 UIWebView 对象上的触摸事件?

它非常适合沙盒/快速创建的应用程序。然而,该应用程序并未反映实际目标项目的复杂性。目标项目有一个 Table View Controller 等等。

在将 WildcardGestureRecognizer 添加到更多涉及的 iPad 应用程序后,我发现在添加手势识别器并且单击发生后,其他控件都不起作用。

这是我正在玩这个想法的一些代码。同样,沙盒代码上还没有控件(例如 Table View Controller 甚至 UIButton),以便在将手势识别器添加到 UIWindow 后查看它们是否工作。

我应该选择 UIWindow 以外的其他东西来添加手势识别器,还是无论如何我都会遇到同样的问题?有没有更好的办法?

沙箱代码:https ://github.com/finneycanhelp/GestureKata

4

1 回答 1

1

您可能想尝试另一种方法:创建一个UIWindow子类,在您的 XIB 中使用它并覆盖hitTest:withEvent:。它返回已“选择”以接收触摸事件的视图。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView *v;

    v = [super hitTest:point withEvent:event];
    if (v == myImageView) {
        // Do something. Maybe return nil to prevent the touch from getting
        // sent to the image view.
    }

    return v;
}

在调试时覆盖此方法也很有帮助。

于 2012-04-08T22:39:00.873 回答