zoukankan      html  css  js  c++  java
  • iOS开发中如何在UITextView中添加默认文字

    在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 及隐藏键盘

    #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:@" "]) {  
    [m_textView resignFirstResponder];  
    return NO;  
    }  
    return YES;  
    }

  • 相关阅读:
    30 tcp编码, udp编码 pycharm输出带颜色, tcp实现的聊天室
    29 网络相关知识 socket
    c++ 程序
    solr 5.4安装
    Linux之ss
    filezilla 证书使用
    mongodb安装,使用
    wireshark抓包发现1506字节包
    python之模块的显要属性
    正则表达式之去除空行
  • 原文地址:https://www.cnblogs.com/guiyangxueyuan/p/5502799.html
Copyright © 2011-2022 走看看