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