Я подклассифицирую 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;
}
компилируется и работает без ошибок. но функции делегата никогда не вызываются. что мне не хватает.
так где же я установить его? –
Вы можете установить его ПОСЛЕ вашего метода init (не в вашем методе, но перед его вызовом). Или с помощью специального метода init, такого как initWithDelegate ... – user1226119
Вам нужно будет установить его после создания объекта. @ user1226119 свойства настройки после alloc, но до того, как init - очень плохая идея. – CrimsonDiego