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個のテキストフィールドを作成します....ビューが読み込まれると、すべてのテキストフィールドが編集可能になります.今、私は値を与えたいです.最初にクリックしたテキストフィールドで、そのTextFieldのみが編集可能になり、残りは編集不可になります.

タグ 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. CalculateMethod() メソッドで試したように、どの TextField が click/Touch/Pressed ですか?

4

2 に答える 2

1

どのフィールドが編集を開始したかを確認するには

Delegateのメソッドを調べる必要がありますUITextField。すべてのフィールドのデリゲートを、selfつまり textFields を作成するコントローラーに設定するだけです。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];


             }
       .......
            }

    }
}

また、反復if (j<20)の条件付き上限として既に 20 を指定しているため、実際に確認する必要はありません。j

于 2012-08-14T07:16:51.900 に答える