实现placeholder属性的UITextView
2015-08-07 16:10
483 查看
GGPlaceholderTextView简介
GGPlaceholderTextView也是对
text操作,具体逻辑如下:
继承
UITextView,并设置
placeholder属性
注册开始编辑和结束编辑通知,然后对
text做相应的操作
通过
UIApplicationWillTerminateNotification通知,在APP退出的时候移除通知。
我把
GGPlaceholderTextView写在下面。不过,微信里看代码还是不太方便,我已经把代码push到:iOSStrongDemo。你可以下载下来。
GGPlaceholderTextView.h
#import <UIKit/UIKit.h> @interface GGPlaceholderTextView : UITextView @property(nonatomic, strong) NSString *placeholder; @end
定义
placeholder属性,类似于
UITextField。
GGPlaceholderTextView.m
#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。感兴趣的童鞋可以去试用一下。
相关文章推荐
- poj-3080-Blue Jeans-串-暴力
- iOS UIActivityIndicatorView活动指示器
- swirl 5: Missing Values
- UITextView实现placeholder的猥琐做法
- Android UI自动化测试最佳实
- iOS UITableViewCell重用问题
- Android中的Handler, Looper, MessageQueue和Thread
- Team Queue(POJ 2259)
- 设置HttpSendRequest阻塞时间
- (四) Basic Build Customization(基本的构建定制 :签名,构建,混淆)
- A1062 Talent and Virtue (25)
- requireJS使用
- (绝对有用)iOS获取UUID,并使用keychain存储
- ueditor在QQ浏览器或者IE浏览器中无法加载
- ueditor在QQ浏览器或者IE浏览器中无法加载
- UICollectionView的使用
- 双飞翼布局介绍-始于淘宝UED
- Field 'id' doesn't have a default value
- UIView添加动画
- IOS第八天(1:UITableViewController团购,数据转模型,xib显示数据)