触摸时呈现视图控制器

时间:2016-11-03 06:28:47

标签: ios objective-c uitapgesturerecognizer

我想实现一个保持预览按钮,该按钮会显示一个包含AVPlayerLayer的视图,只要触摸没有结束,该视图就会播放。视频播放器包含在不同的视图控制器中,我希望能够在呈现它时使用presentViewController:animated:,而不仅仅是将其添加为子视图和子视图控制器。

我的问题是关于如何处理触摸事件。我看到两种可能的方式:

  • 我尝试将活动的触摸事件转移到呈现的视图控制器(不确定是否可能),或
  • 我尝试保持原始视图控制器的手势识别器处于活动状态,然后让视频视图控制器知道何时该解雇自己。我希望通过将呈现的视图控制器的userInteractionEnabled设置为false,或者使用UIViewControllerTransitioningDelegate来呈现它,然后只是跳过调用completeTransition:或者类似的东西(我相信触摸不会在新视图上注册,直到你完成动画,但如果我错了,请纠正我。)

1 个答案:

答案 0 :(得分:1)

  

我的问题是关于如何处理触摸事件。

触摸总是与他们开始的视图相关联。您无法将触摸转移到其他视图。我从来没有尝试过,但我认为你应该首先探讨的选择是:

  • 使用视图控制器包含。使预览视图控制器成为触摸源自的控制器的子视图控制器。这样,父级及其视图层次结构永远不会消失,尽管它们可以被掩盖。

  • 将手势识别器附加到窗口。窗口是一个视图,应该能够有手势识别器。您可以让手势识别器定位到应用程序委托或其他一直存在的对象,并让代理在触发识别器时发布通知。再说一次,我还没试过这个,但看起来它应该可行。