1

私は UITextView をサブクラス化していますが、動作していますが、UITextView Delegate メソッドが呼び出されたときに追加の作業も行いたいと考えています。これが私がこれまでに持っているものです。

ThanaaTextView.h

#import <UIKit/UIKit.h>

#import "ThaanaDelegate.h"


@interface ThaanaTextView : UITextView  {

    @private
    ThaanaDelegate * _thaanaDelegate;

}

ThanaaTextView.m

#import "ThaanaTextView.h"


@implementation ThaanaTextView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
       //do some extra stuff to textview
       //set delegate
       self.delegate = _thaanaDelegate;



    }
    return self;
}


}

@end

ここに私のデリゲートクラスがあります

ThaanaDelegate.h

 #import <UIKit/UIKit.h>
 #import <Foundation/Foundation.h>


@interface ThaanaDelegate : NSObject <UITextViewDelegate> {

    NSMutableArray* _lines;
}

   +(NSString*) reverseText:(NSString*) text withFont:(UIFont*) font carretPosition:(NSRange*) cpos Lines:(NSMutableArray*) lines Bounds:(CGRect) bounds;
-(void) setText:(NSString*) txt textview:(UITextView *)textView;


@end

ThaanaDelegate.m

 -(BOOL) textView:(UITextView*) textView shouldChangeTextInRange:(NSRange) range replacementText:(NSString*) text {
    //delegate method i want to do things in

    return NO;
}



-(void) setText:(NSString*) txt textview:(UITextView *)textView {

    //stuff
    return txt;
}

エラーなしでコンパイルおよび実行されます。ただし、デリゲート関数は呼び出されません。私は何が欠けていますか。

4

1 に答える 1

3

ThanaTextView を初期化するとき、デリゲートはまだ設定されていません。

self.delegate = _thaanaDelegate;

この時点で _thaanaDelegate は nil です。エルゴ、あなたはそれをnilに設定しています。

編集:

ThaanaTextView *ttv = [[ThaanaTextView alloc] initWithFrame:textViewFrame];
ttv.delegate = someDelegateHere;
于 2012-06-13T20:49:12.873 に答える