首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIButton在iOS 5中不调用操作,但在iOS 6中可用

UIButton在iOS 5中不调用操作,但在iOS 6中可用
EN

Stack Overflow用户
提问于 2013-01-17 01:32:30
回答 2查看 3.9K关注 0票数 20

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

代码语言:javascript
运行
复制
[_myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchUpInside];

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

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-17 01:40:29

你已经很好地解释了问题的原因。在iOS 5上,按钮superview上的UITapGestureRecognizer会干扰按钮的操作。在iOS 6上,他们解决了这个问题:他们引入了一个UIView event gestureRecognizerShouldBegin:,一个按钮自动返回NO,用于连接到superview的点击手势识别器。

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

票数 24
EN

Stack Overflow用户

发布于 2013-03-01 21:47:25

在我的例子中,我还使用了一个通用的UITapGestureRecognizer,用于当用户在主视图上的任意位置点击时,关闭由文本字段打开的键盘。

我修复了这个问题,只在键盘出现时添加一个手势识别器(请参见

- (void)keyboardWillShow:(NSNotification *)n

- (BOOL)textFieldShouldBeginEditing:(VDTextFieldWithError *)textField)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14364272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档