iOS开发微信公众号上的iOS技术文章,都将发布在刚刚在线。所以大家可以到我的网站上查看之前的文章,也可以在底部的精彩文章查看历史文章。
上一篇文章 UITextView实现placeholder的猥琐做法 讲了关于 UITextView
的 placeholder
实现原理。大家都一致认为做法比较猥琐。
那么,这一次我将简单的封装一个 UITextView
。暂且取名叫 GGPlaceholderTextView
,GG前缀看着有点任性的哈。
GGPlaceholderTextView
也是对 text
操作,具体逻辑如下:
UITextView
,并设置 placeholder
属性 text
做相应的操作 UIApplicationWillTerminateNotification
通知,在APP退出的时候移除通知。 我把 GGPlaceholderTextView
写在下面。不过,微信里看代码还是不太方便,我已经把代码push到: iOSStrongDemo 。你可以下载下来。
#import <UIKit/UIKit.h> @interface GGPlaceholderTextView : UITextView @property(nonatomic, strong) NSString *placeholder; @end
定义 placeholder
属性,类似于 UITextField
。
#import "GGPlaceholderTextView.h" @implementation GGPlaceholderTextView - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { [self addObserver]; } return self; } - (id)init { if (self = [super init]) { [self addObserver]; } return self; } - (void)setPlaceholder:(NSString *)placeholder { _placeholder = placeholder; self.text = placeholder; self.textColor = [UIColor grayColor]; } -(void)addObserver { //注册通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBeginEditing:) name:UITextViewTextDidBeginEditingNotification object:self]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didEndEditing:) name:UITextViewTextDidEndEditingNotification object:self]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(terminate:) name:UIApplicationWillTerminateNotification object:[UIApplication sharedApplication]]; } - (void)terminate:(NSNotification *)notification { //移除通知 [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)didBeginEditing:(NSNotification *)notification { if ([self.text isEqualToString:self.placeholder]) { self.text = @""; self.textColor = [UIColor blackColor]; } } - (void)didEndEditing:(NSNotification *)notification { if (self.text.length<1) { self.text = self.placeholder; self.textColor = [UIColor grayColor]; } } @end
以上就是关于 GGPlaceholderTextView
的实现,如果你有类似需求,直接拿去用吧!具体用法请往下看。
GGPlaceholderTextView *textView = [[GGPlaceholderTextView alloc] initWithFrame:CGRectMake(0, 64, SCREEN.width , 200)]; textView.backgroundColor = [UIColor whiteColor]; textView.placeholder = @"关注微信公众号iOS开发:iOSDevTip"; [self.view addSubview:textView];
经过封装后的 GGPlaceholderTextView
,使用起来是不是跟 UITextField
非常相似。当然,我封装的比较简单,github上也有一些朋友封装带 placeholder
属性的 UITextView
。比如:TextViewPlaceholder。感兴趣的童鞋可以去试用一下。
你的分享就是对我最大的支持,希望你能把iOS开发推荐给你的朋友,不甚感激!