UITextView实现Placeholder功能
来源:互联网 发布:网络任务赚钱平台 编辑:程序博客网 时间:2024/05/09 18:20
在ios中我们UITextField有Placeholder的功能,但是UITextView却没有这个方法,有时候我们也需要实现这样的Placeholder功能,StackOverFlow给我们提供了一个重写UITextView的方法,少量代码就实现了这个功能,值得学习一下。。
#import <UIKit/UIKit.h>@interface UIPlaceHolderTextView : UITextView@property (nonatomic, retain) NSString *placeholder;@property (nonatomic, retain) UIColor *placeholderColor;-(void)textChanged:(NSNotification*)notification;@end
#import "UIPlaceHolderTextView.h"@interface UIPlaceHolderTextView ()@property (nonatomic, retain) UILabel *placeHolderLabel;@end@implementation UIPlaceHolderTextViewCGFloat const UI_PLACEHOLDER_TEXT_CHANGED_ANIMATION_DURATION = 0.25;- (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self];#if __has_feature(objc_arc)#else [_placeHolderLabel release]; _placeHolderLabel = nil; [_placeholderColor release]; _placeholderColor = nil; [_placeholder release]; _placeholder = nil; [super dealloc];#endif}- (void)awakeFromNib{ [super awakeFromNib]; // Use Interface Builder User Defined Runtime Attributes to set // placeholder and placeholderColor in Interface Builder. 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 - 16,0)]; _placeHolderLabel.lineBreakMode = NSLineBreakByWordWrapping; _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
0 0
- UITextView实现Placeholder功能
- 使用UITextView实现placeholder功能(XIB实现)
- UITextView 实现placeholder
- UITextView实现placeholder
- UITextView 实现 placeholder
- UITextView 实现placeholder的方法
- UITextView 实现placeholder的方法
- UITextView 实现placeholder的方法
- iOS 实现UITextView的placeholder
- UItextview 怎么实现placeholder属性
- UITextView 实现placeholder的方法
- UITextView 实现placeholder的方法
- 实现placeholder属性的UITextView
- UITextView 实现placeholder的方法
- 实现UITextView的placeholder效果
- UITextView 实现placeholder的方法
- 实现placeholder属性的UITextView
- 给UITextView添加类似placeholder功能
- 辛星解读UML建模中的类图
- QFtp的使用
- strcopy,strstr,strcat,memset,sprintf,strcmp
- (最明了)写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
- SQL的流派
- UITextView实现Placeholder功能
- 软件项目经理述职报告
- javascript--清除表单缓存
- 动态规划——整数划分
- $request_uri的使用
- xutils网络模块bug
- sudo: mkfs.vfat: command not found
- rails 生成器模板修改
- BZOJ 1046 HAOI 2007 上升序列 DP