繁体   English   中英

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

[英]UIButton not calling action in iOS 5 but works in iOS 6

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

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

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

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

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

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

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

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

就我而言,当用户点击主视图上的任何位置时,我还使用通用UITapGestureRecognizer来解除由文本字段打开的键盘。

我通过仅在键盘出现时添加手势识别器来修复此问题(请参阅

- (void)keyboardWillShow:(NSNotification *)n

- (BOOL)textFieldShouldBeginEditing:(VDTextFieldWithError *)textField

然后在隐藏键盘时删除手势识别器(从而在识别器本身的选择器方法中删除选择器)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM