2012-04-08 20 views
0

背景:我需要查看应用程序中发生的每个UITouch,并查看UITouch是否不在某个UIImageView中。UIGestureRecognizer添加到UIWindow后,为什么iPad不响应?

WildcardGestureRecognizer看起来非常有前途,我试了一下。 (代码在这里): How to intercept touches events on a MKMapView or UIWebView objects?

它适用于沙箱/快速创建的应用程序。但是,该应用程序并未反映实际目标项目所具有的复杂性。目标项目有一个表视图控制器等等。

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

这里有一些我正在玩这个想法的代码。再次,沙箱代码还没有控制它(如一个表视图控制器,甚至一个UIButton),以查看它们是否在将手势识别器添加到UIWindow之后工作。

我应该选择除UIWindow之外的其他东西来添加手势识别器吗?还是我会遇到同样的问题?有没有更好的办法?

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

回答

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; 
} 

重写此方法在调试时也很有帮助。

+0

听起来不错。我会试一试。谢谢。 :) – finneycanhelp 2012-04-08 22:51:12

+0

工程太棒了!谢谢! – finneycanhelp 2012-04-09 15:29:35

相关问题