我有一个非常奇怪的问题,最近刚出现在我的代码中(它曾经工作正常,直到我认为它是iOS 10)。
我有一个标签栏,其中一个标签是带有取景器的视图控制器,因此我可以扫描条形码。在这个屏幕上,我有一个按钮可以打开手电筒(手电筒),以防它有点黑,你不能很好地看到条形码。
扫描条形码后,我会推送到加载某些东西的控制器,然后当它完成时,它会推送到另一个控制器以显示结果。
从结果控制器,如果你点击后退按钮,我将它设置为弹出到根视图控制器(即取景器)。
突然之间出现了什么奇怪的事情(我认为iOS 10或Xcode 8),在你扫描了一个物体并返回取景器后,火炬按钮不再有效......它是'可见并启用,但它不再触发IBAction方法。我没有在我的代码中的任何位置禁用该按钮,我甚至在viewDidAppear上设置了一个断点来验证按钮是否已启用,它是同一个对象(即按钮没有& #39; t删除并创建一个新的或奇怪的东西),它的目标仍然是我期望的正确的视图控制器(我想知道它是否以某种方式失去了对它的插座选择器的引用,但是它没有#t; t似乎正在发生。)
另外,我使用了" Debug View Hierarchy"验证按钮顶部没有隐藏的视图,并防止它被点击(不是我希望有一个,但我只是想确定)。
如果我还没有扫描任何东西,我可以打开/关闭手电筒(手电筒按钮触发选择器没有问题),如果我在标签栏上选择另一个标签,然后选择标签再次使用取景器,火炬按钮仍能正常工作(顺便说一句,我在viewWillDisappear中有代码可以关闭火炬,以确保当你离开取景器时它没有打开)。
我没想到在启用按钮之前我曾见过这个问题,但只是停止触发IBAction。有什么想法吗?
按钮100%正确工作,直到您将其他视图控制器推入堆栈然后弹回root:然后突然,即使它可见,它已启用,它具有正确的目标,并且没有不可见的视图覆盖/阻挡它,按钮不会触发IBAction插座选择器。这个问题最近开始发生(我想是在我上Xcode 8 / iOS 10时)。