UITextView 实现placeholder的方法

转载 2013年12月04日 12:34:55

转载自:http://www.cnblogs.com/easonoutlook/archive/2012/12/28/2837665.html

(我用的是第二种方法继承,代码没动,倒也实现了,有空了再好好研究下)

在UITextField中自带placeholder属性,可以用于提示输入框信息。但是UITextView并不具备此功能

介绍两种方法来实现:

第一种:

初始化UITextView

  1. //首先定义UITextView  
  2. UITextView *textView = [[UITextView alloc] init];  
  3. textView.font = [UIFont systemFontOfSize:14];  
  4. textView.frame =CGRectMake(10, 0, cell.contentView.bounds.size.width-20, side);  
  5. textView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;  
  6. textView.backgroundColor = [UIColor whiteColor];  
  7. [cell.contentView addSubview:textView];  
  8. textView.hidden = NO;  
  9. textView.delegate = self;  
  10. //其次在UITextView上面覆盖个UILable,UILable设置为全局变量。  
  11. uilabel.frame =CGRectMake(17, 8, cell.contentView.bounds.size.width - side+10, 20);  
  12. uilabel.text = @"请填写审批意见...";  
  13. uilabel.enabled = NO;//lable必须设置为不可用  
  14. uilabel.backgroundColor = [UIColor clearColor];  
  15. [cell.contentView addSubview:uilabel];  

实现UITextView的代理

  1. -(void)textViewDidChange:(UITextView *)textView  
  2. {  
  3.     self.examineText =  textView.text;  
  4.     if (textView.text.length == 0) {  
  5.         uilabel.text = @"请填写审批意见...";  
  6.     }else{  
  7.         uilabel.text = @"";  
  8.     }  

 

第二种:

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;  

}  


iOS之UITextView实现placeHolder占位文字的最佳方法

在iOS开发中,UITextField和UITextView是最常用的文本输入类和文本展示类的控件。不同的是,UITextField中有一个placeholder属性,可以设置UITextField的...
  • liushuo19920327
  • liushuo19920327
  • 2017年11月28日 11:55
  • 40

Swift UITextField/UITextView(placeholder的制作)

UITextField 一个UITextField对象在你的界面上显示一个可编辑的文本区域。你使用的文本字段收集文本输入使用屏幕键盘的用户。键盘是可配置的许多不同类型的输入,如纯文本,电子邮件,数字等...
  • zhuming3834
  • zhuming3834
  • 2016年04月07日 20:45
  • 6395

教大家如何给UITextView添加placeholder扩展

如何扩展UITextView以追加placeholder功能呢?我们的需求是:追加placeholder功能方案讨论: 通过继承UITextView的方式 通过扩展UITextView的方式 分析:方...
  • woaifen3344
  • woaifen3344
  • 2015年08月06日 11:25
  • 4014

IOS UITextView加上placeholder

UITextView上如何加上类似于UITextField的placeholder呢,其实在UITextView上加上一个UILabel,然后再实现 - (BOOL)textView:(UIText...
  • chchong1234
  • chchong1234
  • 2014年04月28日 15:57
  • 4887

iOS UITextView的PlaceHolder 占位文字的实现

使用运行时封装一个UITextView的PlaceHolder占位文字,可以自定义占位文字内容、颜色、字体。...
  • a44496913
  • a44496913
  • 2017年06月13日 17:20
  • 425

iOS 给TextView添加placeholder.

大家都知道textfield中有个属性可以直接设置placeholder,但是textview没有一个这样的属性,要想达到相同的效果只能采用在textview上添加label来实现了. { ...
  • Liu_Esther
  • Liu_Esther
  • 2016年05月30日 09:55
  • 2941

UITextView 实现placeholder的方法

UITextView 实现placeholder的方法 在UITextField中自带placeholder属性,可以用于提示输入框信息。但是UITextView并不具备此功能 介绍两种方法来实现...
  • YouChangJiang
  • YouChangJiang
  • 2013年08月23日 11:28
  • 434

0009-^^^^^ 让UITextView实现占位文字placeholder{不使用第三方}

Placeholder in UITextView 自己创建代码,继承UITextView,不适用第三方的代码;其中IB_DESIGNABLE的作用,就是让你可以在interface build...
  • u011160254
  • u011160254
  • 2018年02月06日 09:09
  • 16

使用UITextView实现placeholder功能(XIB实现)

我是单独建立的View 类文件,然后单独建立XIB和其相关联。结合XIB实现的。 步骤:(1)在XIB上建立2个textView,其中一个写placeholder的textView在上方...
  • qtds8810
  • qtds8810
  • 2015年11月13日 09:15
  • 674

TextViewPlaceholder 自定义UITextView Placeholder文字颜色、大小

TextViewPlaceholder 自定义UITextView Placeholder文字颜色、大小
  • Sico2Sico
  • Sico2Sico
  • 2016年08月04日 11:22
  • 373
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UITextView 实现placeholder的方法
举报原因:
原因补充:

(最多只允许输入30个字)