入力された UITextField に従って UILabel を設定したいと思います。つまり、ユーザーが SAMPLE と入力したいときに S と入力し始めた場合、ラベルを S に設定し、次に A と入力するとラベルも A にする必要があります。これを達成する方法は?
提案を共有してください。
前もって感謝します
入力された UITextField に従って UILabel を設定したいと思います。つまり、ユーザーが SAMPLE と入力したいときに S と入力し始めた場合、ラベルを S に設定し、次に A と入力するとラベルも A にする必要があります。これを達成する方法は?
提案を共有してください。
前もって感謝します
最も簡単な方法は、メソッドを作成し、それをイベントで UiTextfield に接続することです。これにより、テキストフィールドUIControlEventEditingChanged
に入力されたすべての文字のトレースが得られます。
[self.selectedTextField addTarget:self action:@selector(enterInLabel ) forControlEvents:UIControlEventEditingChanged];
-(void)enterInLabel
{
selectedLabel.text=selectedTextField.text;
}
@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;
デリゲートを設定し、ファイル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
ビュー コントローラーは、テキスト フィールドへの変更を受信できるようにするUITextFieldDelegateを実装する必要があります。デリゲートの適切なメソッドで、UILabel のテキストを設定する必要があります。
UITextFieldDelegate を使用したことがないため、使用方法の詳細を提供できません。簡単な例をモックアップし、NSLog またはデリゲート呼び出しをデバッグして、取得した呼び出しを確認します。