12

私は根本的に間違ったことをしているに違いありません。UITextViewDelegateの実装メソッドが起動していません。UITableCellViewのサブビューである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

2 に答える 2

30

textViewObj.delegate = selfを追加するか、xibファイルでそのテキストビュープロパティのデリゲート接続を指定する必要があります。そうすると、UITextViewのすべてのデリゲートメソッドが機能して起動するはずです。

于 2012-09-27T18:30:04.473 に答える
5

私の経験に基づくこれに関するいくつかの指針:

1)UITextFieldまたはUITextViewのどちらを使用しているかを確認します。

2)使用しているテキストフィールドのタイプに基づいて、インターフェイス宣言に次の宣言を追加します

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

3)コントローラーをテキストフィールドのデリゲートとして登録します。

[myTextField setDelegate:self];

4)目的のメソッドをオーバーライドします

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

私の場合。

于 2016-05-19T16:39:28.907 に答える