ios - UIButton 在 iOS 5 中不调用操作但在 iOS 6 中工作

标签 ios ios5 ios6 uibutton uicontrol

我有一个 UIButton,它作为 View Controller 的 IBOutlet 属性从 xib 文件加载。我将选择器附加到 View Controller 的 viewDidLoad 中的按钮:

[_myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchUpInside];

在 iOS 6 中一切正常,但是当我在 iOS 5.0 中的模拟器上运行时,选择器不会被调用。该按钮在被触摸时会突出显示。

另一件需要注意的事情是,该按钮位于添加了 UITapGestureRecognizerUIView 中。当点击按钮时,此 View 的 UITapGestureRecognizer 在 iOS 5.0 中被调用(它在 iOS 6 中不被调用,而是调用按钮的选择器)。

我没有运行 iOS 5 的设备,所以我没有在设备上进行测试,只在模拟器上进行了测试。

有谁知道这里发生了什么,以及如何解决它?

最佳答案

您已经非常漂亮地解释了问题的原因。在 iOS 5 上,按钮 super View 上的 UITapGestureRecognizer 会干扰按钮的操作。在 iOS 6 上,他们解决了这个问题:他们引入了一个 UIView 事件 gestureRecognizerShouldBegin:,并且一个按钮会自动为附加到 superview 的点击手势识别器返回 NO。

对于 iOS 5,您需要在点击手势识别器上使用委托(delegate)方法来阻止它识别点击的 View 是否是按钮。

关于ios - UIButton 在 iOS 5 中不调用操作但在 iOS 6 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14364272/

相关文章:

ios - 带有 iOS 应用程序图像查看器的 ImageSlider

ios - 从两个不同的线程调用相同的函数

objective-c - 应用程序更新,将旧数据库数据转换为新数据库

iphone - 更改 UIImage 上触摸部分的 Alpha 值?

ios - 无需重新压缩即可从用户图库保存/获取 JPEG

ios - UISegmentController 与 UITableviewController

iOS:如何部分更改文本颜色

ios5 - iOS : Receive media in background

iphone - 如何从 HTML 页面获取 PDF (UIWebView)

ios - 手动模态 segue 不起作用,View Controller 不在窗口层次结构中?