如何获取当前活动的 UIEvent?
Posted
技术标签:
【中文标题】如何获取当前活动的 UIEvent?【英文标题】:How to get currently active UIEvent? 【发布时间】:2015-05-15 23:43:29 【问题描述】:背景
我有一个自定义 UIWindow 实现,它在 sendEvent 方法中发布通知。然后我有一个自定义视图,一旦添加到窗口层次结构中,一旦提到的通知发布(即点击任何地方,无论是否在此视图中,都会删除视图)。最后,我有一个按钮,可以将此自定义视图添加到视图层次结构中。现在的问题是,当我点击这个按钮时,视图被添加到视图层次结构中,但是,由这个点击引起的事件在添加自定义视图之后到达我的自定义 UIWindow sendEvent 方法,从而导致自定义视图添加后立即删除。
问题
我想以某种方式访问当前处于活动状态的任何 UIEvent。这可能吗,如果可以,那怎么做?
【问题讨论】:
@matt 这是解释我为什么依赖 sendEvent 的相关 SO 问题:***.com/questions/30167843/… @matt 可以有任何数量,这取决于视图。我的自定义视图是一个通用的东西,不关心屏幕上的内容。它唯一关心的是在点击屏幕上的任何内容时立即移除自己,并且这样做不会干扰该点击。 @matt 好吧,如果 it 被点击,那么它下面的任何东西都不会被点击,因为点击被吸收了。 @matt 我很高兴看到这样的解决方案(假设您的意思是点击将正确突出它应该落入的元素等等)。它也应该适用于滑动等。基本上,我想要的是无论进行什么交互,都应该检测到它,但也应该无缝地转发到预期的屏幕元素。 ©matt 是的,没关系。 【参考方案1】:我通过监听通知来解决这个问题,以便跟踪最近的 UIEvent(我在 userInfo 中提供了 UIEvent)。然后,当再次收到通知时,我确保它与自定义视图出现之前发生的事件不同(如果是,我跳过自定义视图的删除)。
虽然这是对我的问题的回答,但@matt 在回答以下 SO 问题时提出的潜在问题的解决方案要好得多:How can I know when any of the objects on screen were tapped?
【讨论】:
以上是关于如何获取当前活动的 UIEvent?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring 中以编程方式获取当前的活动/默认环境配置文件?