2012-09-27 11 views
11

私は何か根本的に間違っている必要があります。私の実装方法はUITextViewDelegateが起動していません。私は、UITableCellViewのサブビューであるUITextViewを持っていて、代理人は呼び出されていません。UITextViewDelegateメソッドが呼び出されていない(UITableViewCell内のUITextView)

- (void)textViewDidBeginEditing:(UITextView *)textView { 

    NSLog(@"textViewDidBeginEditing"); 
    // never called... 
} 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 

    NSLog(@"shouldChangeTextInRange"); 
    // never called... 
} 

提案ですか?私はそれが重要かどうか分からないが、プロトコルは明示的に私の@interface宣言で命名されている。

@interface DetailViewController() <UITextViewDelgate, ..., ....> 

ありがとうございます!

+4

実際には、ビューコントローラをテキストビューのデリゲートとして設定していますか? 'myTextView.delegate = myDetailViewController'のようなもの... – albertamg

+0

私はデリゲートとして実際にビューコントローラを設定しませんでした!ありがとうございました! – ToddB

+0

@ToddB:viewdidloadに次のコードを追加してください。 [noteTxtView.delegate self]; – Pushkraj

答えて

28

textViewObj.delegate = selfを追加するか、xibファイルのそのテキストビュープロパティの代理人接続を許可して、UITextViewのすべてのデリゲートメソッドを処理して起動する必要があります。私の経験に基づいて、この上のポインタの

+0

素晴らしい。私はデリゲートを設定するのを忘れた。ありがとうございました! – ToddB

4

カップル:

1)あなたはのUITextFieldやUITextViewを使用しているかどうか確認してください。

[myTextField setDelegate:self]; 
:あなたが)あなたのインターフェイス宣言

@interface MyInterface : UIViewController<UITextFieldDelegate> 
         or 
@interface MyInterface : UIViewController<UITextViewDelegate> 

3に次の宣言を追加するには、テキストフィールドのデリゲートとしてあなたのコントローラを登録して使用しているテキストフィールドのタイプに基づいて

2)

4)希望のメソッドをオーバーライドする場合は、

-(void)textFieldDidBeginEditing:(UITextField *)textField 
       or 
- (void)textViewDidBeginEditing:(UITextView *)textView; 

私の場合はオーバーライドしてください。

+1

あなたは人生を救った!私はこの代議員に発砲させようと、私の髪を引っ張ってきました。それから私はあなたのコメント1)を読んだ。 UITextFieldとUITextViewは、あなたが何時間もバグを追跡していたときによく似ています。 – Scooter

関連する問題