UIButton未能激活内部触摸'在第一代iPad上,第二代工作

时间:2013-01-31 19:18:11

标签: ios objective-c cocoa-touch uibutton interface-builder

问题

我有一个带有UIButton的.xib。 UIButton通过Touch Up Inside与文件所有者中的方法- (IBAction)play:(id)sender建立了连接。

当我在第一代iPad上运行时,UIButton在点击时会显示突出显示的状态,但不会调用连接的方法。我在方法的第一行设置了一个断点,它永远不会被击中。

当我在第二代iPad上运行应用程序时,一切正常。

我已经盲目地对这个问题进行了一些攻击,但我希望其他人对可能发生的事情有所了解。知道我在忽视什么吗?

更新,部分解决方案

感谢Stavash的帮助,我发现问题的根源是附加到包含按钮的视图的手势识别器。

当我删除手势识别器时,一切正常。

我看到一个related question表示使用UIGestureRecognizerDelegate的解决方案,以防止手势识别器在按下按钮时响应。

但是,即使按下按钮时委托方法返回NOTouch Up Inside事件似乎仍未触发。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ((touch.view == self.playButton)) {
        return NO;
    }
    return YES;
}

代码来自相关问题,链接在上面

明天我会再做一些实验,如果我找出错误的地方,我会再次发帖。

1 个答案:

答案 0 :(得分:1)

在该视图控制器中有一个活跃的UITapGestureRecognizer,在每个iOS版本中都有不同的反应,这很可能(看起来很奇怪)。尝试取消手势识别器的任何活动实例,看它是否有效。