2012-06-13 2 views
1

Я подклассифицирую UITextView, и я получил его работу, но я также хочу сделать дополнительную работу, когда вызывается методы делегата UITextView. вот что я до сих пор.Пользовательский делегат для UITextView

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; 
} 

компилируется и работает без ошибок. но функции делегата никогда не вызываются. что мне не хватает.

ответ

3

Когда вы запустите ThanaTextView, делегат еще не установлен.

self.delegate = _thaanaDelegate; 

_thaanaDelegate nil в этом пункте. Эрго, ты настраиваешь его на ноль.

Edit:

ThaanaTextView *ttv = [[ThaanaTextView alloc] initWithFrame:textViewFrame]; 
ttv.delegate = someDelegateHere; 
+0

так где же я установить его? –

+0

Вы можете установить его ПОСЛЕ вашего метода init (не в вашем методе, но перед его вызовом). Или с помощью специального метода init, такого как initWithDelegate ... – user1226119

+0

Вам нужно будет установить его после создания объекта. @ user1226119 свойства настройки после alloc, но до того, как init - очень плохая идея. – CrimsonDiego

Смежные вопросы