UIButton 动作不起作用

Posted

技术标签:

【中文标题】UIButton 动作不起作用【英文标题】:UIButton action not working 【发布时间】:2012-08-11 22:53:12 【问题描述】:

我在使用 UIButton 时遇到了一些问题。

这是我的代码:

我没有使用 Interface Builder,我是一名新程序员

What I want is that when the button is selected the title changes and the button's transparency changes from half visible to fully visible.

提前致谢,-Marnix

【问题讨论】:

代码在哪里?究竟是什么不工作,你怎么知道?你试过什么? 1.这是.m 文件。 2.它显示第一个'if'语句效果,而不是@“UnTapped”。 你到底想做什么? 我希望按钮在被选中时是半透明的(alpha:0.5),在未选中时完全可见 此代码在按钮的IBAction 内? 【参考方案1】:

问题是if 语句只执行一次,当您创建按钮时。在MyCode2 中,添加这一行:

[Button1 addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchDown];

每次按下按钮,都会执行buttonAction方法,所以:

- (IBAction)buttonAction:(id)sender 
    if(Button1.selected == NO) 
        // Do your "NO" stuff
    else if(Button1.selected == YES) 
        // Do your "YES" stuff
    

您必须在 .h 中声明此 IBAction 并将此方法添加到您的 .m 文件中。

【讨论】:

谢谢,这很有帮助。 其实你可能不需要在.h中声明它,因为它不会被其他类使用。 这是真的,@Selkie。我是那种喜欢一切井井有条的开发人员...... :-P【参考方案2】:

首先,你应该为不同的控件状态设置标题,比如

[Button1 setTitle:@"UnTapped" forState:UIControlStateSelected];

其次,您不需要将setTitle 方法放在此检查中。

此外,您需要将此检查放在按钮的方法中以使其工作。如果你没用过IB,那就用addTarget: action: forControlEvent就好了

[Button1 addTarget:self actoin:@selector(changeButtonState:) forControlEvent:UIControlEventTouchUpInside];

最后,您是否让按钮在触摸后保持选中状态?如果没有,请添加

Button1.selected = !Button1.selected

在方法中。总而言之,你的方法应该是这样的

- (IBAction)buttonAction:(id)sender 
    Button1.selected = !Button1.selected
    if(Button1.selected == NO) 
        Button1.alpha = 0.5
    else if(Button1.selected == YES) 
        Button1.alpha = 1.0
    

【讨论】:

如果我可以设置多个答案,我也会将您的答案作为“答案”。还是谢谢。

以上是关于UIButton 动作不起作用的主要内容,如果未能解决你的问题,请参考以下文章

由 UITapGestureRecognizer 创建的单击在 UIButton 上不起作用

iOS:UIButton 的动画文本位置不起作用

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

第一次点击按钮动作不起作用

为啥我的 UIButton 不起作用?

UIButton 子类@IBAction 不起作用