UITextView 实现placeholder
2013-12-06 13:10
281 查看
在UITextField中自带placeholder属性,可以用于提示输入框信息。但是UITextView并不具备此功能
介绍两种方法来实现:
第一种:
初始化UITextView
//首先定义UITextView
UITextView *textView = [[UITextView alloc] init];
textView.font = [UIFont systemFontOfSize:14];
textView.frame =CGRectMake(10, 0, cell.contentView.bounds.size.width-20, side);
textView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
textView.backgroundColor = [UIColor whiteColor];
[cell.contentView addSubview:textView];
textView.hidden = NO;
textView.delegate = self;
//其次在UITextView上面覆盖个UILable,UILable设置为全局变量。
uilabel.frame =CGRectMake(17, 8, cell.contentView.bounds.size.width - side+10, 20);
uilabel.text = @"请填写审批意见...";
uilabel.enabled = NO;//lable必须设置为不可用
uilabel.backgroundColor = [UIColor clearColor];
[cell.contentView addSubview:uilabel];
实现UITextView的代理
-(void)textViewDidChange:(UITextView *)textView
{
self.examineText = textView.text;
if (textView.text.length == 0) {
uilabel.text = @"请填写审批意见...";
}else{
uilabel.text = @"";
}
}
第二种:
UITextView 实现 placeholder 及隐藏键盘
//隐藏键盘,实现UITextViewDelegate
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
{
if ([text isEqualToString:@"\n"]) {
[m_textView resignFirstResponder];
return NO;
}
return YES;
}
介绍两种方法来实现:
第一种:
初始化UITextView
//首先定义UITextView
UITextView *textView = [[UITextView alloc] init];
textView.font = [UIFont systemFontOfSize:14];
textView.frame =CGRectMake(10, 0, cell.contentView.bounds.size.width-20, side);
textView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
textView.backgroundColor = [UIColor whiteColor];
[cell.contentView addSubview:textView];
textView.hidden = NO;
textView.delegate = self;
//其次在UITextView上面覆盖个UILable,UILable设置为全局变量。
uilabel.frame =CGRectMake(17, 8, cell.contentView.bounds.size.width - side+10, 20);
uilabel.text = @"请填写审批意见...";
uilabel.enabled = NO;//lable必须设置为不可用
uilabel.backgroundColor = [UIColor clearColor];
[cell.contentView addSubview:uilabel];
实现UITextView的代理
-(void)textViewDidChange:(UITextView *)textView
{
self.examineText = textView.text;
if (textView.text.length == 0) {
uilabel.text = @"请填写审批意见...";
}else{
uilabel.text = @"";
}
}
第二种:
UITextView 实现 placeholder 及隐藏键盘
#import <Foundation/Foundation.h> @interface UIPlaceHolderTextView : UITextView { NSString *placeholder; UIColor *placeholderColor; @private UILabel *placeHolderLabel; } @property(nonatomic, retain) UILabel *placeHolderLabel; @property(nonatomic, retain) NSString *placeholder; @property(nonatomic, retain) UIColor *placeholderColor; -(void)textChanged:(NSNotification*)notification; @end #import "UIPlaceHolderTextView.h" @implementation UIPlaceHolderTextView @synthesize placeHolderLabel; @synthesize placeholder; @synthesize placeholderColor; - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [placeHolderLabel release]; placeHolderLabel = nil; [placeholderColor release]; placeholderColor = nil; [placeholder release]; placeholder = nil; [super dealloc]; } - (void)awakeFromNib { [super awakeFromNib]; [self setPlaceholder:@""]; [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; } 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 - 16,0)]; placeHolderLabel.lineBreakMode = UILineBreakModeWordWrap; placeHolderLabel.numberOfLines = 0; placeHolderLabel.font = self.font; 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
//隐藏键盘,实现UITextViewDelegate
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text
{
if ([text isEqualToString:@"\n"]) {
[m_textView resignFirstResponder];
return NO;
}
return YES;
}
相关文章推荐
- UITextView 实现placeholder的方法
- 史上最全的iOS之UITextView实现placeHolder占位文字的N种方法
- 史上最全的iOS之UITextView实现placeHolder占位文字的N种方法
- iOS控件UITextView 实现placeholder效果和解决UITableView键盘遮挡
- 实现placeholder属性的UITextView
- UITextView 实现placeholder的方法
- UITextView 实现placeholder的方法
- iOS Dev (60) 怎样实现 UITextView 中的 placeHolder
- iOS开发-带Placeholder的UITextView实现
- 使用UITextView实现placeholder功能(XIB实现)
- UITextView 实现 placeholder 及隐藏键盘
- iOS之UITextView实现placeHolder占位文字的最佳方法
- UITextView中实现placeholder的方法
- 实现UITextView的placeholder
- UITextView实现placeholder的猥琐做法
- iOS UITextView 实现placeholder的方法
- iOS Dev (60) 怎样实现 UITextView 中的 placeHolder
- UItextview 怎么实现placeholder属性
- iOS Dev (60) 如何实现 UITextView 中的 placeHolder
- UITextView实现Placeholder功能