iOS 自定義TextView設(shè)置placeholder屬性

用慣TextField的placeholder屬性,當(dāng)然在使用TextView自然而然 .placeholder可這時(shí)怎么點(diǎn)都點(diǎn)不出來,

下面廢話不多說,直接介紹可以使用TextView. placeholder的方法

創(chuàng)建自定義placeHolderTextView類繼承于UITextView

  1. 在placeHolderTextView.h 中
#import <UIKit/UIKit.h>
@interface placeHolderTextView : UITextView
@property (nonatomic, retain) NSString *placeholder;
@property (nonatomic, retain) UIColor *placeholderColor;
-(void)textChanged:(NSNotification*)notification;
@end
  1. 在placeHolderTextView.m中
 #import "placeHolderTextView.h"
@interface placeHolderTextView ()
@property (nonatomic, retain) UILabel *placeHolderLabel;
@end

@implementation placeHolderTextView
CGFloat const UI_PLACEHOLDER_TEXT_CHANGED_ANIMATION_DURATION = 0.25;
- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)awakeFromNib {
    [super awakeFromNib];
    if (!self.placeholder) {
        [self setPlaceholder:@""];
    }
    if (!self.placeholderColor) {
          [self setPlaceholderColor:[UIColor lightGrayColor]];
    }
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification object:nil];
}

- (id)initWithFrame:(CGRect)frame {
    if( (self = [super initWithFrame:frame]) )  {
        [self setPlaceholder:@""];
        [self setPlaceholderColor:[UIColor lightGrayColor]];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification object:nil];
    }
    return self;
}

- (void)textChanged:(NSNotification *)notification  {
    if([[self placeholder] length] == 0)  {
        return;
    }
    
    [UIView animateWithDuration:UI_PLACEHOLDER_TEXT_CHANGED_ANIMATION_DURATION animations:^{
        if([[self text] length] == 0) {
            [[self viewWithTag:999] setAlpha:1];
        }  else {
            [[self viewWithTag:999] setAlpha:0];
        }
    }];
}

- (void)setText:(NSString *)text {
    [super setText:text];
    [self textChanged:nil];
}

- (void)drawRect:(CGRect)rect {
    if( [[self placeholder] length] > 0 ) {
        if (_placeHolderLabel == nil ) {
            _placeHolderLabel = [[UILabel alloc] initWithFrame:CGRectMake(8,8,self.bounds.size.width-5,10)];
            _placeHolderLabel.lineBreakMode = NSLineBreakByWordWrapping;
            _placeHolderLabel.numberOfLines =0;
//            _placeHolderLabel.font = self.font; //調(diào)整textView字體
            _placeHolderLabel.font = [UIFont systemFontOfSize:14];
            _placeHolderLabel.backgroundColor = [UIColor clearColor];
            _placeHolderLabel.textColor = self.placeholderColor;
            _placeHolderLabel.alpha = 0;
            _placeHolderLabel.tag = 999;
            [self addSubview:_placeHolderLabel];
        }
        
        _placeHolderLabel.text = self.placeholder;
        [_placeHolderLabel sizeToFit];
        [self sendSubviewToBack:_placeHolderLabel];
    }
    
    if( [[self text] length] == 0 && [[self placeholder] length] > 0 )  {
        [[self viewWithTag:999] setAlpha:1];
    }
    [super drawRect:rect];
}

@end

  1. 使用步驟
    一. 導(dǎo)入頭文件 #import "placeHolderTextView.h"

二. 定義屬性

@property(strong,nonatomic) placeHolderTextView *textView;

三. 創(chuàng)建設(shè)置添加圖層容器

    self.textView=[[cnhbPlaceHolderTextView alloc]initWithFrame:CGRectMake(10, 10, SCREEN_W-20, 110)];
    self.textView.placeholder=@" 描述 xxxxxxxxxxxxxxxx 信息";
    self.textView.layer.borderColor=[UIColor lightGrayColor].CGColor;
    self.textView.layer.borderWidth=1.0;
    self.textView.scrollEnabled = YES;
    self.textView.autoresizingMask = UIViewAutoresizingFlexibleHeight; //自適應(yīng)高度
    self.textView.returnKeyType = UIReturnKeyDefault; //返回鍵的類型
    self.textView.keyboardType = UIKeyboardTypeDefault; //鍵盤類型
    [self.view addSubview:self.textView];

我是楚簡(jiǎn)約边篮,感謝您的閱讀灌曙,

喜歡就點(diǎn)個(gè)贊唄芍锦,“?喜歡”励饵,

鼓勵(lì)又不花錢,你在看恐锦,我就繼續(xù)寫~

非簡(jiǎn)書用戶往果,可以點(diǎn)右上角的三個(gè)“...”,然后"在Safari中打開”一铅,就可以點(diǎn)贊咯~


到此為止.記錄下容易忘的細(xì)節(jié)同大家分享!!!??????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陕贮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子潘飘,更是在濱河造成了極大的恐慌肮之,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卜录,死亡現(xiàn)場(chǎng)離奇詭異戈擒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)艰毒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門筐高,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丑瞧,你說我怎么就攤上這事柑土。” “怎么了绊汹?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵稽屏,是天一觀的道長。 經(jīng)常有香客問我西乖,道長诫欠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任浴栽,我火速辦了婚禮,結(jié)果婚禮上轿偎,老公的妹妹穿的比我還像新娘典鸡。我一直安慰自己,他們只是感情好坏晦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布萝玷。 她就那樣靜靜地躺著嫁乘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪球碉。 梳的紋絲不亂的頭發(fā)上蜓斧,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音睁冬,去河邊找鬼挎春。 笑死,一個(gè)胖子當(dāng)著我的面吹牛豆拨,可吹牛的內(nèi)容都是我干的直奋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼施禾,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脚线!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弥搞,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤邮绿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后攀例,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體船逮,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年肛度,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了傻唾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡承耿,死狀恐怖冠骄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情加袋,我是刑警寧澤凛辣,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站职烧,受9級(jí)特大地震影響扁誓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚀之,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一蝗敢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧足删,春花似錦寿谴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咏瑟。三九已至,卻和暖如春痪署,著一層夾襖步出監(jiān)牢的瞬間码泞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工狼犯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留余寥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓辜王,卻偏偏與公主長得像劈狐,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呐馆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容