将 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)的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 从其超类设置 UIButton 目标和操作

在 UITableViewCell 中为 UIButton 添加和删除目标操作

UIButton 不会指向目标

UIButton 在子视图控制器中不起作用

(目标:对象)不适用于从 viewController 外部设置 UIButton

目标 C. 这个 UIButton 图像有啥问题?