我有一个我希望在我的应用程序中显示的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是正确的方法吗? 谢谢!
答案 0 :(得分:1)
我的解决方案不是转发触摸,而是将您的UI组件包含在涵盖所有UIWindow的另一个视图中。然后,您可以将TapGesture添加到主UI外部的区域。