UIButton的不是要求在iOS 5的行动,但在iOS 6中的工作原理(UIButton not

2019-08-07 02:24发布

我有一个UIButton ,其由XIB文件作为加载IBOutlet视图控制器的属性。 我选择附加在按钮viewDidLoad我的视图控制器:

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

在iOS 6中一切正常,但是当我在的iOS 5.0选择模拟器中运行不会被调用。 当被触摸的按键也彰显。

另外要注意的是,该按钮是一个UIView具有UITapGestureRecognizer添加到它。 该UITapGestureRecognizer这一观点被称为的iOS 5.0当按钮被窃听,(它不会被调用在iOS 6中,其中按钮的选择被称为替代)。

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

有谁知道这里发生,以及如何解决呢?

Answer 1:

你已经说明了问题的非常漂亮的原因。 在iOS 5上的一个按钮的上海华一UITapGestureRecognizer与按钮的操作干扰。 在iOS 6,它们固定这样的:它们引入一个UIView事件gestureRecognizerShouldBegin:和一个按钮自动返回NO为附接至上海华敲击手势识别器。

对于iOS 5,你需要使用水龙头手势识别的委托方法,从认识到,如果敲击的观点是按钮停止。



Answer 2:

就我而言,我还使用一般的UITapGestureRecognizer解雇通过文本字段打开时,用户将随时随地轻按主视图键盘。

我解决了这个问题通过在键盘显示了只添加一个手势识别(见

- (void)keyboardWillShow:(NSNotification *)n

- (BOOL)textFieldShouldBeginEditing:(VDTextFieldWithError *)textField

然后隐藏键盘时(因此在识别器本身的选择方法除去选择器)除去所述手势识别



文章来源: UIButton not calling action in iOS 5 but works in iOS 6