iOS 客户端学习-UITextView

1.UITextView中添加placeholder

   创建GCPlaceholderTextView类,如下所示,使用方法,创建公共方法

   

   +(void)setTextViewByTextView:(GCPlaceholderTextView*)textView placeholder:        (NSString*)placeholder{

    textView.placeholderColor = [UIColor lightGrayColor];

    textView.placeholder = NSLocalizedString(placeholder,);

    }

在页面调用方法如下:

   

   [Utils setTextViewByTextView:self.textView placeholder:@""];

    

GCPlaceholderTextView.h文件

    

#import <UIKit/UIKit.h>



@interface GCPlaceholderTextView : UITextView 


@property(nonatomic, strong) NSString *placeholder;


@property (nonatomic, strong) UIColor *realTextColor UI_APPEARANCE_SELECTOR;

@property (nonatomic, strong) UIColor *placeholderColor UI_APPEARANCE_SELECTOR;


@end


GCPlaceholderTextView.m文件

#import "GCPlaceholderTextView.h"


@interface GCPlaceholderTextView () 


@property (unsafe_unretained, nonatomic, readonly) NSString* realText;


- (void) beginEditing:(NSNotification*) notification;

- (void) endEditing:(NSNotification*) notification;


@end


@implementation GCPlaceholderTextView


@synthesize realTextColor;

@synthesize placeholder;

@synthesize placeholderColor;


#pragma mark -

#pragma mark Initialisation


- (id) initWithFrame:(CGRect)frame {

    if ((self = [super initWithFrame:frame])) {

        [self awakeFromNib];

    }

    return self;

}


- (void)awakeFromNib {

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(beginEditing:) name:UITextViewTextDidBeginEditingNotification object:self];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(endEditing:) name:UITextViewTextDidEndEditingNotification object:self];

    

    self.realTextColor = self.textColor;

    self.placeholderColor = [UIColor lightGrayColor];

}


#pragma mark -

#pragma mark Setter/Getters


- (void) setPlaceholder:(NSString *)aPlaceholder {

    if ([self.realText isEqualToString:placeholder] && ![self isFirstResponder]) {

        self.text = aPlaceholder;

    }

    if (aPlaceholder != placeholder) {

        placeholder = aPlaceholder;

    }

    

    

    [self endEditing:nil];

}


- (void)setPlaceholderColor:(UIColor *)aPlaceholderColor {

    placeholderColor = aPlaceholderColor;

    

    if ([super.text isEqualToString:self.placeholder]) {

        self.textColor = self.placeholderColor;

    }

}


- (NSString *) text {

    NSString* text = [super text];

    if ([text isEqualToString:self.placeholder]) return @"";

    return text;

}


- (void) setText:(NSString *)text {

    if (([text isEqualToString:@""] || text == nil) && ![self isFirstResponder]) {

        super.text = self.placeholder;

    }

    else {

        super.text = text;

    }

    

    if ([text isEqualToString:self.placeholder] || text == nil) {

        self.textColor = self.placeholderColor;

    }

    else {

        self.textColor = self.realTextColor;

    }

}


- (NSString *) realText {

    return [super text];

}


- (void) beginEditing:(NSNotification*) notification {

    if ([self.realText isEqualToString:self.placeholder]) {

        super.text = nil;

        self.textColor = self.realTextColor;

    }

}


- (void) endEditing:(NSNotification*) notification {

    if ([self.realText isEqualToString:@""] || self.realText == nil) {

        super.text = self.placeholder;

        self.textColor = self.placeholderColor;

    }

}


- (void) setTextColor:(UIColor *)textColor {

    if ([self.realText isEqualToString:self.placeholder]) {

        if ([textColor isEqual:self.placeholderColor]){

             [super setTextColor:textColor];

        } else {

            self.realTextColor = textColor;

        }

    }

    else {

        self.realTextColor = textColor;

        [super setTextColor:textColor];

    }

}


#pragma mark -

#pragma mark Dealloc


- (void)dealloc {

    [[NSNotificationCenter defaultCenter] removeObserver:self];

    

}


@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值