如何检查“UITextField with tag”上按下Textfield标签的值/触摸还是单击?

时间:2012-08-14 06:58:19

标签: iphone objective-c ios xcode

我有以下代码......

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个文本字段....当视图将加载时,所有文本字段都是可编辑的。现在我想给出值。我想要在哪个文本字段上单击,首先,只有TextField可以编辑,而Rest将是NonEditable。

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

现在我无法弄清楚哪个标签被按下或点击了?并且无法使我单击的TextField可编辑为First,并且不可编辑?

我试过这个来检查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];
} 

}

所以我有两个问题

  1. 我想,我点击哪个文本字段首先,只有TextField可以编辑而Rest会是NonEditable,怎么做?

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

2 个答案:

答案 0 :(得分:1)

检查哪个字段已开始修改

您应该查看Delegate的{​​{1}}方法。只需将所有字段的委托设置为UITextField,即创建textFields的控制器。然后实现self委托方法

UITextField

在方法中检查传入参数- (void)textFieldDidBeginEditing:(UITextField*)textField; 的标记以执行任务。

启用停用字段

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

答案 1 :(得分: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];


             }
       .......
            }

    }
}

你并不需要if (j<20)检查,因为你已经将20作为j迭代的条件上限。