我有以下代码......
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];
}
}
所以我有两个问题
我想,我点击哪个文本字段首先,只有TextField可以编辑而Rest会是NonEditable,怎么做?
单击哪个TextField /触摸/按下,就像我在CalculateMethod()方法中尝试过一样?
答案 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
迭代的条件上限。