简体   繁体   English

禁用 UIButton 依赖于 4 UITextFields

[英]Disabled UIButton dependant on 4 UITextFields

I have 4 UITextFields that I am using to keep 2 UIButtons disabled until all 4 fields have data entered into them.我有 4 个 UITextFields 我用来保持 2 个 UIButtons 禁用,直到所有 4 个字段都输入了数据。 I have the following code so far到目前为止我有以下代码

- (void)textFieldDidBeginEditing:(UITextField *)textField {


if (([brand.text length] >0) && ([qty.text length] >0) && ([size.text length] >0) && ([price.text length] >0)) {
    [calcOneButton setEnabled:YES];
    [calcTwoButton setEnabled:YES];

}else {

}


}

I have a number of problems with this:-我对此有很多问题:-

  1. When data is removed from the fields the UIButtons are still enabled当从字段中删除数据时,UIButtons 仍处于启用状态
  2. The Buttons arent enabling correctly, after I have entered data into all 4 fields I need to re-tap on a field to enable the button.按钮没有正确启用,在我将数据输入所有 4 个字段后,我需要重新点击一个字段以启用按钮。
  3. I am logging the length of each field but as a character is entered it starts at a count of 0 not 1.我正在记录每个字段的长度,但是当输入一个字符时,它从 0 而不是 1 开始计数。

Can anyone help with these points?任何人都可以帮助解决这些问题吗?

The code for logging the length of a field is as follows:-记录字段长度的代码如下:-

#define MAXLENGTH 5
#define MAXQTY 3
#define MAXSIZE 4
#define MAXBRAND 10

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == brand) {
    int lengtha = [brand.text length] ;
    NSLog(@"lenghta = %d",lengtha);
    if (lengtha >= MAXBRAND && ![string isEqualToString:@""]) {
        brand.text = [brand.text substringToIndex:MAXBRAND];
        return NO;
    }

it follows the same format for all 4 fields, but as I enter a character the NSlog results as a 0 then 1 for the second character and so on.它对所有 4 个字段都遵循相同的格式,但是当我输入一个字符时,NSlog 结果为 0,然后第二个字符为 1,依此类推。

Just use another delegate-method.只需使用另一个委托方法。

Either use: textFieldDidEndEditing: like Krypton told you in a comment要么使用: textFieldDidEndEditing:就像氪星在评论中告诉你的那样

or use textField:shouldChangeCharactersInRange:replacementString: for enable/disable directly when typing.或使用textField:shouldChangeCharactersInRange:replacementString:在键入时直接启用/禁用。

textField:(UITextField*)aTextField shouldChangeCharactersInRange:(NSRange) aRange replacementString:(NSString*)aRepString
{
    NSString *newStr = [aTextField.text stringByReplacingCharactersInRange:aRange withString:aRepString];
    if([newStr length]>0 && /*otherStringLength > 0*/)
          //enable
    else
          //disable
    return YES;
 }

But I think the most common way is to use the didEndEditing -method但我认为最常见的方法是使用didEndEditing -方法

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM