如何在输入有效值后启用UIButton

时间:2013-02-28 14:13:01

标签: iphone ios objective-c cocoa-touch uibutton

我有这个应用程序和重置按钮来重置我输入的值。只要我没有输入有效值,我就试图让按钮变灰。

当值有效时,它应该启用并变得可触摸......

我该怎么做?

我正在使用此代码,但它无效...

//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");
}

5 个答案:

答案 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;
}