将触摸转发到 UINavigationController 交互式弹出手势不完全工作

Posted

技术标签:

【中文标题】将触摸转发到 UINavigationController 交互式弹出手势不完全工作【英文标题】:Forwarding touches to UINavigationController Interactive Pop Gesture Not completely Working 【发布时间】:2015-11-20 09:09:43 【问题描述】:

我正在尝试在我的键盘附件视图上启用交互式弹出手势识别器。默认情况下它不起作用。

我将交互式弹出手势识别器引用传递给我的附件视图,以便将其触摸事件转发给识别器

它特别有效:导航栏的标题发生了变化,并且辅助视图的背景显示了前一个视图控制器的视图,就好像过渡确实开始了一样。但是即使手势识别器完成跟踪,顶视图本身仍然存在。

我还尝试将触摸事件转发到导航控制器本身、其视图、顶部视图控制器和它们的窗口。即使同时转发给所有这些,也没有任何变化

任何想法缺少什么?

【问题讨论】:

【参考方案1】:

看起来无法在响应者链中重用触摸事件实例。一旦UIWindow 上的sendEvent: 被调用,已经有某个视图拥有该触摸,因此将UIEvent 实例转发给其他视图或它们的手势识别器是没有意义的。

但是,拥有视图可以将事件转发到其nextResponder()s(例如:附加到此视图或视图子视图之一的手势识别器之一)

将触摸转发到另一个视图(来自另一个视图层次结构)或另一个视图的手势识别器的唯一机会是在 UITouch 对象创建之前:即在 UIWindow 级别上 hitTest:withEvent: 方法调用期间,它调用pointInside:withEvent:方法

无论如何,我不确定是否可以将触摸从一个 UIWindow 转发到另一个。稍后会更新答案

http://www.russbishop.net/uitouchtypestylus?utm_campaign=ios%2BDev%2BWeekly&utm_medium=email&utm_source=iOS_Dev_Weekly_Issue_225

http://smnh.me/hit-testing-in-ios/

【讨论】:

以上是关于将触摸转发到 UINavigationController 交互式弹出手势不完全工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS 不会将触摸转发到以下视图

平移手势不会将触摸转发到 Mapbox MGLMapView

将触摸转发到 UINavigationController 交互式弹出手势不完全工作

使用后将覆盖 UIView 的触摸事件转发到下面的 UIScrollView

iOS:如何将触摸事件从子视图转发到超级视图? [复制]

iOS中的触摸事件转发