手势识别器不适用于选项卡式应用程序

Posted

技术标签:

【中文标题】手势识别器不适用于选项卡式应用程序【英文标题】:Gesture recognizer not working with Tabbed Application 【发布时间】:2014-10-29 10:59:18 【问题描述】:

应用程序使用 UITabBarController 作为其根控制器。在其中一个视图中,我使用 Tap Gesture Recognizer 进行相机对焦和曝光。点击手势识别器在 Storyboard 中设置并链接到实现文件中的 IBAction。当用户点击屏幕时,不会调用 IBAction 方法,也不会执行任何操作。

它在没有 UITabBarController 的先前版本中运行良好。

我尝试在该视图控制器的“viewDidLoad”中打印 self.view.window 并得到“(null)”。

使用 Xcode 6.1 并在 ios 8 中运行。

您对为什么会发生这种情况以及解决此问题的方法有什么想法吗?提前谢谢!

【问题讨论】:

当您在故事板中点击有问题的视图时,您在连接检查器中看到了什么?您应该会看到gestureRecognizers outlet 集合到您的视图控制器视图的有效连接。 @FergalRooney 感谢您的回复,这给了我解决问题的灵感!请查看问题的更新。 【参考方案1】:

问题解决了,原来和Tab栏无关。

我做错的是在故事板中我将手势识别器链接到相机预览视图上方的错误项目。解决方案是删除该连接并重新链接:选择点击手势识别器并打开连接检查器并将“引用插座集合”拖动到您想要的视图。

感谢@Fergal Rooney提醒我检查我忘记检查的连接检查器,因为我一直认为这是标签栏或iOS版本或Xcode版本的问题。

【讨论】:

以上是关于手势识别器不适用于选项卡式应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 UIWebView 中向后/向前滑动手势?

识别用户剪切/滑动手势 (UISwipeGestureRecognizer)

如何将 UIView 中的一部分用于手势识别器?

iOS手势识别器

当通过手势识别器滑动切换到仅点击选项卡时,在 tabbarcontroller 中切换选项卡会给出不同的结果

iOS:用于平滑滚动和轻弹视图的手势识别器