【发布时间】:2012-03-16 18:52:59
【问题描述】:
我知道我想做什么,但我不知道该怎么做:我想实现像 iOS 多任务手势这样的东西。也就是说,如果触摸次数大于(例如)两次,我想从视图层次结构中的 any 视图中“窃取”触摸。当然,手势并不是用来控制多任务处理的,它只是我所追求的透明触摸窃取。
由于这是一个相当复杂的应用程序(它广泛使用 viewController 的容器),我希望它对它发生的视图是透明的(即,我希望能够显示任意视图和层次结构,包括 UIScrollViews、 MKMapViews、UIWebViews 等,而无需更改它们的实现以与我的手势配合使用)。
仅仅向公共父视图添加一个gestureRecognizer是行不通的,因为启用交互的子视图会吃掉所有落在它们上面的触摸。
添加一个视觉透明的支持 UI 的视图作为主视图层次结构的同级(但在前面)也不起作用,因为现在 这个 视图会吃掉所有的触摸。我已经尝试在 touchView 中重新实现 touchesBegan: 等,但是将触摸转发到 nextResponder 不起作用,因为那将是常见的超级视图,实际上是将触摸集中在应该的视图周围当 touchView 放弃它们时接收它们。
我确信我不是唯一一个为此寻找解决方案的人,而且我确信还有比我更聪明的人已经解决了这个问题。我什至怀疑它实际上可能并不难,只是今天我的大脑可能不会只见树木不见森林。无论如何,我都感谢任何有用的答案:)
【问题讨论】:
-
最后,我选择了不同的解决方案,因为我最初想法的 UX 似乎也不是最佳的。我现在有更小的“处理”区域,使用(和代码)不那么模棱两可。但如果有人对这个问题有明确的答案,我仍然有兴趣听到它。
标签: ios cocoa-touch uiview uigesturerecognizer