2

これは私の最初の投稿StackOverflowであり、XcodeとObjective-Cも新しくなっています。 私は代議員について読みましたが、他の人のコードも試しました。しかし、他人のコードをコピーせずにデリゲートを使用するものを自分で作成できるかどうかを見たいと思っていました。UITextFieldにテキストが入力されているときにUILabelを更新する方法

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

私はxibファイルを作成し、TextFieldを私の.hファイル内のUITextField * myTextFieldとLabel UILabel * myLabelに接続しました。

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

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

私はこれに関するいくつかの方向性について助けていただきたいと思います。

答えて

1

をですから、UITextFieldのがmyTextFieldがあなたのペン先IB TextFieldオブジェクトにリンクされている、とUILabel mylabelというあなたのペン先IBにリンクされている場合Labelオブジェクトを作成して、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; 
} 
+0

ありがとうございます。はい、これは機能しました。 – user1363388

+0

これは回避策ですが、あなたは 'UITextInput'プロトコルを使用するべきです –

+0

これにはapplescript objcバージョンがありますか?ありがとうございます –

6

あなたはそのようなのUITextFieldに通知オブザーバーとしてあなたのUIViewControllerを追加することができます。

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

- (void)textFieldDidChange:(UITextField *)textField { 
} 
0
import UIKit 

class ViewController: UIViewController , UITextFieldDelegate { 
    // Create a label Outlet 
    @IBOutlet weak var label: UILabel! 
    // TextField Outlet 
    @IBOutlet weak var textField: UITextField! 
    // Select the textfield and in connection inspector drag a action from editing changed to the source code 
    @IBAction func changed(_ sender: Any) { 
     // Set text to label 
     label.text = textField.text 
     } 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     //Delegate to self 
     textField.delegate = self 
     textField.autocorrectionType = .no 
    } 
    // Implement the protocols 
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     return true 
    } 
    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    }} 
+0

基本的には、それに対応するアクションとプロトコルが必要です値をインスタンス変数に設定する場合は、didEndEditingのアクションでそれを実行できますが、 'code'を実装する必要がありますtextFieldDidEndEditing' – Nitrousjp

関連する問題