UIGestureRecognizer添加到UIWindow后,为什么iPad不响应?
问题描述:
背景:我需要查看应用程序中发生的每个UITouch,并查看UITouch是否不在某个UIImageView中。UIGestureRecognizer添加到UIWindow后,为什么iPad不响应?
WildcardGestureRecognizer看起来非常有前途,我试了一下。 (代码在这里): How to intercept touches events on a MKMapView or UIWebView objects?
它适用于沙箱/快速创建的应用程序。但是,该应用程序并未反映实际目标项目所具有的复杂性。目标项目有一个表视图控制器等等。
将WildcardGestureRecognizer添加到更多的iPad应用程序后,我发现在添加手势识别器并发生一次单击之后,其他控件都不起作用。
这里有一些我正在玩这个想法的代码。再次,沙箱代码还没有控制它(如一个表视图控制器,甚至一个UIButton),以查看它们是否在将手势识别器添加到UIWindow之后工作。
我应该选择除UIWindow之外的其他东西来添加手势识别器吗?还是我会遇到同样的问题?有没有更好的办法?
答
你可能想尝试另一种方法:创建一个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;
}
重写此方法在调试时也很有帮助。
听起来不错。我会试一试。谢谢。 :) – finneycanhelp 2012-04-08 22:51:12
工程太棒了!谢谢! – finneycanhelp 2012-04-09 15:29:35