-3

こんにちは、私は次の問題を抱えています。インターフェイスビルダーを使用してアプリケーションの UI を作成し、ユーザーがテキストフィールドにテキストを入力して押すたびにテキストフィールド、ボタン、およびラベルを持つ iphone アプリケーションを作成しました。ボタンをクリックすると、ラベルに「Welcome : text field content」というメッセージが表示されます。ボタン クリック用に次の IBAction を記述しました。

-(IBAction)updateText:(id)sender{

    NSString *text;

    if( [ textName.text length] == 0 )
    {
        text = @"Please Enter Your Name";
    }

    else
    {
        text = [ [NSString alloc] initWithFormat:@"Hello : %@" , textName.text ];
    }

    lblHello.text = text;

    [text release];

}

ここで、textName はテキスト フィールドの名前で、lblHello はラベルです

しかし、テキストフィールドにテキストを入力してボタンを押すというこのプロセスを自動化したいのですが、iPhoneのキーボードを使用して値が自動的に入力され、ボタンがクリックされるように、目的のC関数を記述します。その関数とその関数をどこで呼び出すかを書いて、タスクを完了するのを手伝ってくれる人はいますか? これについて私を助けてください。参照用にさらにコードが必要かどうか教えてください。

前もって感謝します

4

2 に答える 2

2

これには、 UITextFieldDelegateMethodsを使用する必要があります。見て:

textField:shouldChangeCharactersInRange:replacementString:

ユーザーがテキスト フィールドに新しい文字を入力するか、既存の文字を削除するたびに、テキスト フィールドはこのメソッドを呼び出します。

委任の場合、コードまたはInterfacebuilderを介して、テキストフィールドの委任をビューコントローラーに設定する必要があります。UITextFieldDelegateそして、クラスがプロトコルに準拠していることをviewcontrollersヘッダーファイルで宣言する必要があります。

セーフケースが述べたように、デリゲートメソッドを使用できます

textFieldDidEndEditing:

それも。to との違いは、ラベルが更新される時間です。textFieldDidEndEditing:テキストフィールドでの編集後にtextField:shouldChangeCharactersInRange:replacementString:呼び出され、入力中に呼び出されます。

コード:

あなたの.hファイルで:

@interface YourClass : YourClassSuperClass <UITextFieldDelegate>

@propertys
-(void)someMethod;
@end

.m ファイルで、デモンストレーションのために実装したいデリゲート メソッドを選択しますtextFieldDidEndEditing:

@implementation YourClass

- (void)viewDidLoad {
    textField.delegate = self;
}

#pragma mark - UITextFieldDelegate methods

- (void)textFieldDidEndEditing:(UITextField *)aTextField {
    lblHello.text = aTextField.text;
}

textField.delegate必要に応じて、IB 経由で設定することもできます。デリゲートを設定することを忘れないでください。そうしないと、デリゲート メソッドが呼び出されません。

委任パターンはよく使うので慣れておきましょう!委任の仕組みとその使用方法の詳細については 、Objective-C プログラミングの概念 -> 委任とデータ ソースを参照してください。

于 2012-05-23T06:10:16.770 に答える
0

これには UITextFieldDelegate メソッドを使用します。ユーザーが iPhone キーボードの戻るボタンをクリックすると、このメソッドが呼び出されます。

- (void)textFieldDidEndEditing:(UITextField *)textField
{

 if( [textName.text length] == 0 )
 {
   text = @"Please Enter Your Name";
 }

 else
 {
   text = [ [NSString alloc] initWithFormat:@"Hello : %@" , textName.text ];
 }

 lblHello.text = text;

}
于 2012-05-23T06:12:48.567 に答える