2012-08-14 22 views
0

我有以下代码...如何检查“带标记的UITextField”上的哪个文本框标记被按下/触摸或单击的值?

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个文本框....所有的文本框是可编辑的观点将load.Now我想给value.I想,在其文本框我点击首先,只有那个TextField是可编辑的而Rest是不可编辑的。

我给了标签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. 我想,在其文本框我点击第一,只有文本字段可以编辑及其余的将是不可编辑的,如何做到这一点?

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

回答

1

要检查哪些领域开始编辑

你应该看看Delegate方法为您UITextField秒。只需将所有字段的代表设置为self即创建textField的控制器。然后实现在该方法中UITextField委托方法

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

检查传入的参数textField的标记来执行你的任务。

启用禁用领域

把所有的领域在NSMutableArray,遍历数组,只允许其委托的参数相匹配的领域。禁用其余的。

+0

先生同样的事情我想做的“在方法检查传入参数textField的标记执行您的任务。”如何检查标签?我尝试过,如果(txtfeild.tag == 1){.... Something ....},这个条件不会执行,即使我输入“txtfeild.tag = 1”的值,编译器也不会进入这种状态。 – 2012-08-17 08:07:27

+0

它应该工作。尝试使用'NSLog(@“标记为%i”,textField)记录标记值。标签);'确保你有正确的'如果'条件 – tGilani 2012-08-17 10:12:49

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)检查,你已经给j迭代的20为条件上限。

+0

先生,我想知道哪个Textfiled标签被点击?如何知道? – 2012-08-14 07:40:42

+0

@Areeba Khan为了您已经得到了上述答案,我希望为您的未来工作提供一点帮助。正如另一个答案所说,你使用委托方法来获取触摸的textView作为发件人(种姓'id'类)和所有其他的textView,你可以从我的答案中得到一个小循环,或者你可以将它们全部存储在数组来保存搜索时间。希望能帮助到你。 – 2012-08-14 07:48:39

+0

如何解决这个问题? – 2012-08-16 08:17:14

相关问题