我一直在寻找解决方案,但没有幸运找到一个。如果以前有人问过,也许有人可以指出来,或者帮助我一个想法。
我有UIViewController
该主机拖曳自定义视图。第一个自定义视图是全屏。第二个自定义视图,实际上是一个菜单,从屏幕底部滑入视图,类似于带有自定义动画的工具栏,然后它应该滑出。
当前配置:菜单在延迟后滑入视图(视图出现后),并且 NSTimer 开始计数。它会在视图中停留几秒钟,直到 NSTimer 触发另一个方法,并且该方法将菜单收回。
一切正常。
我想要什么:如果用户开始与菜单、切换开关、滑块等进行交互,我希望菜单留在视图中,延迟 NSTimer 的触发,直到用户完成交互。然后收回菜单。
为此,我在将菜单滑入视图的方法中使用了 NSTimer,以触发在 X 毫秒后收回菜单的其他方法。
在收回菜单的方法中,我使计时器无效。
我覆盖了该tocuhesBegan
方法,以查看交互区域是否在菜单的边界内,如果是,则将 NSTimer 重置为另一个 X 毫秒。
问题:如果用户触摸菜单的背景,那很好,但是如果用户与菜单内的开关、按钮和幻灯片进行交互,menu.view
则不会注册触摸,这是有道理的,因为它们是最前线并耗尽了触摸事件,因此触摸事件不会向下传递。但另一方面,这是我的问题!
我不能touchesBegan
覆盖menu.view
. 我还能如何注册 menu.view 区域中发生的那些触摸?
我试图locationInView:nil
在窗口内进行触摸,但这也没有记录与按钮和滑块等的交互。
谢谢。