将 UIButton 的目标设置为 IBAction 不起作用(Objective-C)
Posted
技术标签:
【中文标题】将 UIButton 的目标设置为 IBAction 不起作用(Objective-C)【英文标题】:Set target of UIButton to IBAction not working (Objective-C) 【发布时间】:2013-05-17 17:09:02 【问题描述】:以下以编程方式将 UIButton 的目标设置为 IBAction 的代码是否有任何原因不起作用?
.h
- (IBAction)googleIt:(id)sender;
.m
UIButton *google = [[UIButton alloc] initWithFrame:CGRectMake(20.0, 15.0, 280.0, 40.0)];
[google addTarget:self action:@selector(googleIt:) forControlEvents:UIControlEventTouchUpInside];
(在视图中确实加载了,这是在那之后)
-(IBAction)googleIt:(id)sender
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com"]];
编辑:在 googleIt 之后添加了一个 : ,仍然无法正常工作。当我在情节提要中添加一个按钮并将其连接到 IBAction 时,它可以工作,因此 IBAction 本身不是问题。
编辑:请求完整的按钮代码
UIButton *google = [[UIButton alloc] initWithFrame:CGRectMake(20.0, 15.0, 280.0, 40.0)];
[google addTarget:self action:@selector(googleIt:) forControlEvents:UIControlEventTouchUpInside];
[google setTitle:@"Google 'em" forState:UIControlStateNormal];
[google setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
google.backgroundColor = [UIColor blackColor];
[charityInfo addSubview:google];
编辑:完成!未启用用户操作。有人能说出这个答案,我会认为是真的吗?
【问题讨论】:
您是否也将按钮添加到视图层次结构中? 是的,按钮已正确添加到视图中,并显示为简洁起见,我省略了几个属性。 您可以发布其余的按钮创建代码吗?到目前为止,您发布的内容看起来还不错 我不想听起来很愚蠢,但是您确定 UI 中显示的按钮与您在代码中创建的按钮相同吗?因为据我所见,代码应该可以工作。 我知道的没错!它应该闪烁工作。呃。 【参考方案1】:google 的选择器缺少冒号,表示它需要一个参数
应该是
[google addTarget:self action:@selector(googleIt:) forControlEvents:UIControlEventTouchUpInside];
编辑,从 cmets 添加:选择器是问题的一部分,但未在包含按钮的视图上启用用户交互。
【讨论】:
谢谢,我想知道为什么 xCode 要我添加它。我现在已经添加了它,但是单击该按钮时仍然没有任何作用,但至少我知道我需要一个冒号。还有其他想法吗? 您是否在 googleIt 方法中添加了日志或断点来验证其调用? 是的,当我点击那个按钮时它没有被调用。出于某种原因,UIButton 只是没有被添加为操作的出口,但我所看到的任何地方都是添加它的确切语法。 通常使用 UIButtons 你不会分配初始化它们..而是调用 buttonWithType UIButton 类方法然后设置框架。类似于 UIButton *google = [UIButton buttonWithType:UIButtonTypeCustom] 是否有一些变化是问题所在?以上是关于将 UIButton 的目标设置为 IBAction 不起作用(Objective-C)的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewCell 中为 UIButton 添加和删除目标操作