0

我有这个应用程序和一个重置按钮来重置我输入的值。只要我不输入有效值,我就会尝试让按钮变为灰色。

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

我怎样才能做到这一点?

我正在使用此代码,但它不起作用...

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

5 回答 5

2

要在按钮符合您的条件时启用该按钮,请使用setEnabled:YES

例如

UIButton *button = (UIButton *)sender;
[button setEnabled:YES];

一个更好的方法是使用点表示的版本,如下所示:

button.enabled = YES;
于 2013-02-28T14:16:23.657 回答
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;
    }
}
于 2013-02-28T14:19:07.850 回答
0

如果您在 UITextField 中输入值,则可以为文本字段设置委托并编写代码以启用/禁用textFieldDidEndEditing:委托对象的内部方法。IE; theButton.enabled = YES/NO 从您的代码看来,您正在编写用于在该按钮本身的操作中禁用该按钮的代码,如果该按钮被禁用,则该按钮将不起作用。

于 2013-02-28T14:36:16.897 回答
0

***经过长时间的搜索,我确实解决了问题。

我发现 ResetButton 必须有一个看起来像这样的属性

@property(强,非原子)IBOutlet UIButton *resetButton;

然后我突出显示按钮并从控件中取消选中启用(之前尝试过,但没有用)

我使用 button.enabled=YES 并使用 [resetButton setAlpha:1] 更改颜色为正常, [resetButton setAlpha:0.5] 为未激活

谢谢大家帮助!*

于 2013-03-20T09:43:48.460 回答
-1

例如,如果您在 UITextField 中输入值,则使用文本字段的委托来确定该值是否正确:

-(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;
}
于 2013-02-28T14:35:54.503 回答