我有这个应用程序和重置按钮来重置我输入的值。只要我没有输入有效值,我就试图让按钮变灰。
当值有效时,它应该启用并变得可触摸......
我该怎么做?
我正在使用此代码,但它无效...
//Reset values
- (IBAction)resetPressed:(UIButton *)sender {
if (didPan==1) {
resetPressed.enabled = YES;
} else {
resetPressed.enabled = NO;
}
self.prozent=0;
didPan=NO;
//remove drawn intersection line
[intersectionLine removeFromSuperview];
NSLog(@"resetPressed");
}
答案 0 :(得分:2)
要启用符合条件的按钮,请使用 setEnabled:YES 。
E.g。
UIButton *button = (UIButton *)sender;
[button setEnabled:YES];
更好的方法是使用点标记版本,例如:
button.enabled = YES;
答案 1 :(得分:1)
在您的情况下,您使用的是if (didPan==1) {
,但它会提供所需的结果,但最好使用if(didPan)
其次resetPresed
是操作名称而不是按钮或发件人,因此您应该使用发件人而不是resetPressed
并设置按钮状态使用[sender setEnabled:YES];//OR sender.enabled=YES;
所以你的代码看起来像这样
- (IBAction)resetPressed:(UIButton *)sender {
if (didPan) {
[sender setEnabled:YES]; //OR sender.enabled=YES;
} else {
[sender setEnabled:NO]; // OR sender.enabled=NO;
}
}
答案 2 :(得分:0)
如果要在UITextField中输入值,则可以设置文本字段的委托,并编写用于启用/禁用委托对象的textFieldDidEndEditing:
方法内部的代码。
即; theButton.enabled = YES/NO
从您的代码看起来,您正在编写用于禁用该按钮本身操作内部按钮的代码,如果禁用该按钮,该代码将无效。
答案 3 :(得分:0)
***经过长时间的搜索,我确实解决了这个问题。
我发现ResetButton必须有一个属性 看起来像这样
@property(强,非原子)IBOutlet UIButton * resetButton;
然后我突出显示了该按钮并从控件中取消选中(之前尝试过,但它不起作用)
我使用了button.enabled = YES并使用[resetButton setAlpha:1]更改了颜色,而[resetButton setAlpha:0.5]未激活
谢谢你的帮助! *
答案 4 :(得分:-1)
如果您在UITextField中输入值,则使用textfield的委托确定值是否正确:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField.text isValid]) { // check if text in textfield is valid
button.enabled = YES;
} else {
button.enabled = NO;
}
return YES;
}