UIButton没有在iOS 5中调用操作,但在iOS 6中工作

Dar*_*ren 20 uibutton uicontrol ios ios5 ios6

我有一个UIButton从xib文件加载作为IBOutlet视图控制器的属性.我将一个选择器附加到viewDidLoad我的视图控制器中的按钮:

[_myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

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

另一件需要注意的事情是按钮UIView位于UITapGestureRecognizer添加了它的按钮中.在UITapGestureRecognizer这种观点被调用的的iOS 5.0当按钮被窃听,(它不会被调用在iOS 6中,其中按钮的选择被称为替代).

我没有运行iOS 5的设备,所以我没有在设备上测试过,只是模拟器.

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

mat*_*att 24

你已经非常精美地解释了问题的原因.在iOS 5上,按钮的超视图上的UITapGestureRecognizer会干扰按钮的操作.在iOS 6上,他们修复了这个问题:他们引入了一个UIView事件gestureRecognizerShouldBegin:,并且一个按钮会自动为附加到superview的轻击手势识别器返回NO.

对于iOS 5,您需要在点击手势识别器上使用委托方法,以阻止它识别点击的视图是否为按钮.

  • 这个答案包括代码:http://stackoverflow.com/questions/13515539/uibutton-not-works-in-ios-5-x-everything-is-fine-in-ios-6-x (2认同)