2

これは StackOverflow への私の最初の投稿であり、Xcode と Objective-C も初めてです。デリゲートについて読んだことがあり、他の人のコードも試しました。ただし、他の人のコードをコピーすることなく、デリゲートを使用するものを自分で作成できるかどうかを確認したかったのです。

デリゲートを理解するために私がやろうとしているのは、ユーザーがキーボードでキーを入力するたびに UITextField デリゲートを取得してラベルを更新することです。

xib ファイルを作成し、.h ファイルで TextField を UITextField *myTextField および Label UILabel *myLabel に接続しました。

ViewController クラスの .h ファイルにも追加しました。

ただし、 UITextFieldDelegate.h にリストされているように使用できるオプションのメソッドは、編集が終了した後にのみ更新できるように見えるため、どのデリゲート メソッドを使用すればよいかわかりません。また、xib に関連付けられた .h ファイルまたは AppDelegate.h ファイルに AppDelegate メソッドを配置する必要があるかどうかもわかりません。

これに関する何らかの方向性について何か助けていただければ幸いです。

4

3 に答える 3

6

次のように、UIViewController を UITextField の通知オブザーバーとして追加できます。

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

- (void)textFieldDidChange:(UITextField *)textField {
}
于 2012-04-30T03:33:38.960 に答える
1

したがって、nib IB TextField オブジェクトにリンクされた UITextField myTextField と、nib IB Label オブジェクトにリンクされた UILabel myLabel があり、Textfield がファイルの所有者を指すようにした場合は、これが役立つかどうかを確認してください。

これをすばやく入力しただけで、テストはしていないので、最初にエラーがないか確認してください。

// ViewController.h
@interface ViewController : UIViewController <UITextFieldDelegate> {
    IBOutlet UILabel *myLabel;
    IBOutlet UITextField *myTextField;
}
@property (nonatomic, retain) UILabel *myLabel;
@property (nonatomic, retain) UITextField *myTextField;
@end


//  ViewController.m
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    myLabel.text = myTextField.text;
    return YES;   
}
于 2012-04-30T19:14:53.783 に答える