2010-12-15 11 views
1

私のアプリでは、ユーザーがテキストを入力したときに文字列に対して操作を実行しようとしています。 viewDidLoadメソッドで:UITextFieldは構造体または共用体ではありませんか?

-(void)textFieldDidChange:(id)sender { 
sender = (UITextField *)sender; 
[self operationForInput:sender.text inTextField:sender]; 
} 

しかし、私はコンパイルしようとすると、それは私に何かない構造のメンバ 『テキスト』のための」リクエストを提供します:ここで

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

は、そのメソッドの宣言がありますon union "エラーです。私は間違って何をしていますか?

答えて

3

ローカル変数senderのタイプはidです。 textプロパティsenderにアクセスしようとしていますが、これはid(それはUITextFieldのプロパティです)には存在しません。

ラインsender = (UITextField *)senderは役に立たない、あなた意気消沈idからUITextField*のですが、あなたが戻っsenderに割り当てるときに、あなたが戻っidにアップキャストしています。あなたは、このようにコードを変更する必要があります。

UITextField *textField = sender; // casts from id to other types are implicit 
[self operationForInput:textField.text inTextField:textField]; 
+0

それはそれです。キャストについてそれを知らなかった。ありがとう! – Jumhyn

0

次のようなもので行く必要があります:あなたのテキストフィールドは、あなたのヘッダーで定義されていることを確認作る

-(void)textFieldDidChange:(UITextField *)textField { 
    if(textField == textField1) { 
     /* do something for textfield 1 */ 
    } 
    if(textField == textField2) { 
     /* do something for textfield2 */ 
    } 
} 

また、上記のデリゲートを使用する場合は、[textView addTarget...を使用する必要はありません。

関連する問題