iOS中的触摸事件转发
Posted
技术标签:
【中文标题】iOS中的触摸事件转发【英文标题】:Touch event forwarding in iOS 【发布时间】:2014-07-31 20:55:38 【问题描述】:我有一个 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】:我的解决方案不是转发触摸,而是将您的 UI 组件包含在另一个覆盖所有 UIWindow 的 View 中。然后,您可以将 TapGesture 添加到主 UI 之外的区域。
【讨论】:
以上是关于iOS中的触摸事件转发的主要内容,如果未能解决你的问题,请参考以下文章
使用后将覆盖 UIView 的触摸事件转发到下面的 UIScrollView
将触摸事件从覆盖 UIView 转发到 UIWebView / 如何从代码将触摸事件发送到 uiwebview