1

我有一个 UI 组件,我想在我的应用程序中显示,这样任何触摸事件都会将其关闭(尽管触摸组件本身会产生与触摸它外部不同的结果)。

我当前的解决方案是拥有一个自定义 UIWindow 子类,它可以正确处理触摸并位于整个屏幕的顶部。但是,我不希望触摸被消耗,而是转发到它后面的任何 UI 元素(即我希望触摸触发窗口内的某些内容,但仍将事件转发到窗口后面的视图)。

我尝试转发触摸事件的方式是-[MyWindow sendEvent:]:

NSUInteger superWindowIndex = [[UIApplication sharedApplication].windows indexOfObject:self];
if (superWindowIndex == 0 || superWindowIndex == NSNotFound) {
    [super sendEvent:event];
} else {
    [[UIApplication sharedApplication].windows[superWindowIndex - 1] sendEvent:event];
}

然而,这并没有像我希望的那样奏效。

实现我想要做的事情的最佳方式是什么?UIWindow 是正确的方法吗?谢谢!

4

1 回答 1

1

我的解决方案不是转发触摸,而是将您的 UI 组件包含在另一个覆盖所有 UIWindow 的视图中。然后,您可以将 TapGesture 添加到主 UI 之外的区域。

于 2014-07-31T21:01:25.670 回答