1

入力された UITextField に従って UILabel を設定したいと思います。つまり、ユーザーが SAMPLE と入力したいときに S と入力し始めた場合、ラベルを S に設定し、次に A と入力するとラベルも A にする必要があります。これを達成する方法は?

提案を共有してください。

前もって感謝します

4

4 に答える 4

4

最も簡単な方法は、メソッドを作成し、それをイベントで UiTextfield に接続することです。これにより、テキストフィールドUIControlEventEditingChangedに入力されたすべての文字のトレースが得られます。

[self.selectedTextField addTarget:self action:@selector(enterInLabel ) forControlEvents:UIControlEventEditingChanged];


-(void)enterInLabel 
{ 
    selectedLabel.text=selectedTextField.text;
}
于 2012-08-10T10:26:54.480 に答える
0

@brainが言ったように、デリゲートもこれのために機能します。メソッドはshouldChangeCharactersInRange:少し混乱する可能性がありますが、次のことはかなり簡単だと思います。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

// myTextField delegate has been set

if ([textField isEqual:myTextField]){
    NSMutableString *txt = [NSMutableString stringWithString:textField.text];
    [txt replaceCharactersInRange:range withString:string]; //this is essentially how the textfield is updated after YES is returned
    previewLabel.text = txt;
}
return YES;
}

テキスト フィールドの変更は、実際には YES が返された後に行われます。それがこのデリゲートの要点です。例として、テキストフィールドを 3 文字に制限したい場合、次のようにして、テキストフィールドがテキストを「置換」するのを止めることができます。

 if (range.location > 3) 
    return NO;
于 2013-11-05T00:21:54.000 に答える
-1

デリゲートを設定し、ファイルtextFieldでそのメソッドを呼び出しviewController.mます..このように-

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    mylabel.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
    return YES;
}

これにより、文字が増えるたびにテキストが変更されます。

または TextField にアクションを追加できます このリンクを参照してください - UiTextField events

于 2012-08-10T10:19:59.527 に答える
-2

ビュー コントローラーは、テキスト フィールドへの変更を受信できるようにするUITextFieldDelegateを実装する必要があります。デリゲートの適切なメソッドで、UILabel のテキストを設定する必要があります。

UITextFieldDelegate を使用したことがないため、使用方法の詳細を提供できません。簡単な例をモックアップし、NSLog またはデリゲート呼び出しをデバッグして、取得した呼び出しを確認します。

于 2012-08-10T10:00:59.760 に答える