禁用UIButton依赖于4个UITextFields

时间:2011-06-05 10:13:11

标签: iphone xcode ios

我有4个UITextField用于保持2个UIButton禁用,直到所有4个字段都输入了数据。到目前为止我有以下代码

- (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 {

}


}

我有很多问题: -

  1. 从字段中删除数据时,UIButtons仍处于启用状态
  2. 按钮无法正确启用,在我将数据输入所有4个字段后,我需要重新点击字段以启用按钮。
  3. 我正在记录每个字段的长度,但是当输入一个字符时,它从0开始而不是1开始。
  4. 任何人都可以帮助解决这些问题吗?

    记录字段长度的代码如下: -

    #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;
        }
    
    对于所有4个字段,它遵循相同的格式,但是当我输入字符时,NSlog结果为0,然后是第二个字符的1,依此类推。

1 个答案:

答案 0 :(得分:0)

只需使用其他委托方法。

使用:textFieldDidEndEditing:就像Krypton在评论中告诉你的那样

或在输入时直接使用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;
 }

但我认为最常见的方法是使用didEndEditing - 方法