【问题标题】:UIBarButtonItem sent action works on iOS 6 but not iOS 5UIBarButtonItem 发送的动作适用于 iOS 6 但不适用于 iOS 5
【发布时间】:2012-12-02 23:33:07
【问题描述】:

我要撕毁我的头发,因为我想不出为什么会在 5 而不是 6 上发生这种情况的合乎逻辑的原因。所以基本上,我有一个带有导航栏和取消按钮的模态视图 (@987654323 @ - 没有自定义任何东西,只是一个标准按钮)在导航栏中。当点击此取消按钮时,我希望模态视图消失。这在 iOS 6 中工作得很好。但对于 iOS 5,它拒绝在我的代码中有它的 3 个地方中的 2 个工作。令我感到奇怪的是,它对其中一个有效,而对另外两个无效。

使用情节提要,我右键单击按钮,单击已发送操作下的“选择器”,然后拖动到视图控制器的 .h 文件中适当的 IBAction 方法。通过 Xcode 中的小闪烁动画成功确认了链接。当我在 iOS 6 上运行应用程序(模拟器或设备无关紧要)时,该方法在按钮点击时成功执行并且我的模式视图被关闭。但是,在 iOS 5 上,甚至从未调用过该方法(我在方法内设置了断点以查看它们是否会被命中)。我什至尝试将我的IBAction 方法中的参数从id 切换到UIBarButtonItem *。不过没有雪茄。

我还尝试以编程方式(在viewDidLoad 中)将取消按钮的操作设置为选择器。我什至将目标设定为 VC。又没有雪茄了。这是我当前设置的屏幕截图:

请注意IBAction 方法。

我错过了文档中的一些神奇条款吗?为了让它在 iOS 5 中运行,我需要做一些非常特别的事情吗?这对我来说确实像是一个错误,但我对这些东西还是很陌生,所以我知道什么。

我正在使用 Xcode 4.5.2 和故事板,并针对 iOS 5 和 iOS 6 进行发布。

感谢您的帮助,谢谢。

【问题讨论】:

  • 一些事情:1)我们需要看一些代码; 2) 您在 XIB 中的出口图片 3) 您是否尝试过从两个模拟器中删除该应用程序并运行干净的构建?
  • 我会添加截图。我已经删除并替换了应用程序,但仍然是同样的问题。清理、分析、重建项目。
  • 嗨斯蒂芬!任何运气解决问题?由于完全相同的问题,我的头发也处于危险之中!

标签: objective-c ios uibarbuttonitem


【解决方案1】:

我认为使用 GestureRecognizer 可能存在问题,请评论该代码并尝试一下...

【讨论】:

  • 哦,天哪,这似乎奏效了。我想知道为什么手势识别器会搞砸。不过,我的取消按钮呢?我不相信我可以轻松地向它添加手势识别器。
【解决方案2】:

我添加了一个单独的UIView,它位于我的文本字段和按钮下方以及导航栏/标题下方。我以编程方式向其中添加了点击手势,这似乎可以识别我的点击和取消按钮的动作。如果手势在根视图上,我仍然想知道为什么点击手势会吞噬UIBarButtonItem 的动作。 This question helped me figure this out。谢谢。

【讨论】:

    【解决方案3】:

    您可以使用以下委托方法从手势识别器中排除视图/控件

    // UIGestureRecognizerDelegate

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    {
        // exclude your view from gesture recognizer
        if(yourView == touch.view)
        {
            return NO;
        }
    
        // 
        return YES;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      相关资源
      最近更新 更多