ios - 为什么UIWindow添加UIGestureRecognizer后iPad无响应?

标签 ios ipad uigesturerecognizer

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

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

它非常适合沙箱/快速创建的应用程序。然而,该应用程序并未反射(reflect)实际目标项目的复杂性。目标项目有一个 TableView Controller 等等。

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

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

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

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

最佳答案

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

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

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

关于ios - 为什么UIWindow添加UIGestureRecognizer后iPad无响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067059/

相关文章:

objective-c - 根据方向获取 iPad View 的中心

objective-c - iOS 中的键盘快捷键?

ios - 2个同时具有不同方向的各种UIPanGestureRecognizers?

ios - 如何向 UIGestureRecognizer 添加 segue

ios - animateWithDuration 和 UIViewAnimationOptionsAllowUserInteraction

ios - 在 NSDictionary 中传递 NSDate 并转换为 NSData 以进行 jsondata 修复

iphone - Objective-C:如何获取 `objc_property_t` 属性的值?

ios - 从底部覆盖控制中心屏幕边缘平移?

ios - iBeacons 监控通知距离

ios - subview 的 CGRectIntersectsRect