在iOS中触摸事件转发

时间:2014-07-31 20:55:39

标签: ios objective-c touch-event uiresponder uievent

我有一个我希望在我的应用程序中显示的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是正确的方法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

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