0

我有以下代码...

for (j=0; j<20; j++) {

    if (j<20) {



    txtField = [[UITextField alloc] initWithFrame:CGRectMake(110, txt_Pos_Y, 100, 15)];
    txtField.borderStyle = UITextBorderStyleRoundedRect;
    txtField.font = [UIFont systemFontOfSize:11];
    txtField.tag = j;
    txtField.placeholder = @"Enter Value";
    txtField.autocorrectionType = UITextAutocorrectionTypeNo;
    txtField.keyboardType = UIKeyboardTypeDefault;

    txtField.returnKeyType = UIReturnKeyDone;
    txtField.clearButtonMode = UITextFieldViewModeWhileEditing;
    txtField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;    
    txtField.delegate = self;
    [scrollView addSubview:txtField];
    [txtField release];      


    txt_Pos_Y  = txt_Pos_Y  + 20; 
    }

该代码创建了 20 个文本字段....当视图加载时,所有文本字段都是可编辑的。现在我想给出值。我想要在哪个文本字段上单击首先,只有那个文本字段是可编辑的,而休息将是不可编辑的。

我给了标签,txtField.tag = j;

现在我无法弄清楚按下或单击了哪个标签?并且无法使我首先单击的 TextField 可编辑,而其余的不可编辑?

我试过这个来检查CalculateMethod() 方法中点击txtField.tag == 1 的条件,但这不起作用。

-(void)CalculateMethod {
UITextField *txtFld = (UITextField*)[scrollView viewWithTag:1];


// I want if TextFeild "txtField.tag == 1"  is clicked then Enter this condition 
if(txtField.tag == 1){      
double a;
a = Var_sqFt * Var_sqMtr;
txtFld.text = [[NSString alloc] initWithFormat:@"%.4f",a];
} 


// I want if TextFeild "txtField.tag == 2"  is clicked then Enter this condition 
if(txtField.tag == 2){     // Here I want Only that 
double a;
a = Var_sqFt * Var_sqMtr;
txtFld.text = [[NSString alloc] initWithFormat:@"%.4f",a];
} 

}

所以我有2个问题

  1. 我想在哪个文本字段上单击首先,只有 TextField 是可编辑的,而 Rest 是 NonEditable ,该怎么做?

  2. 哪个 TextField 被点击/触摸/按下,就像我在 CalculateMethod() 方法中尝试过的一样?

4

2 回答 2

1

检查哪个字段开始编辑

您应该查看DelegateUITextField的 s 的方法。只需将所有字段的委托设置为self即创建文本字段的控制器。然后实现UITextField委托方法

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

在方法中检查传入参数的标签textField以执行您的任务。

启用禁用字段

将所有字段放在一个 中NSMutableArray,迭代数组并仅启用与委托参数匹配的字段。禁用其余部分。

于 2012-08-14T07:10:53.087 回答
0

[scrollView viewWithTag:1]将始终为您提供带有标签的子视图,该标签1与您的代码片段后面的 textView 相同。如果你想通过所有的 textViews 你可以做到这一点

for (UIView* aSubview in [self.scrollView subviews])
{
    if ([aSubview isKindOfClass:[UITextView class]])
    {
            UITextView * typedTextViewSubview = aSubview;
            switch (typedTextViewSubview.tag)
            {
            case 1 : {
               double a;
               a = Var_sqFt * Var_sqMtr;
               typedTextViewSubview.text = [[NSString alloc] initWithFormat:@"%.4f",a];


             }
       .......
            }

    }
}

And you do not really need if (j<20) check as you already have given 20 as conditional upper limit of j iteration.

于 2012-08-14T07:16:51.900 回答