iOS&UITextView中的placeholder属性

一看标题,就很屌丝!

的确,系统不给咱们,那咱们就自己弄!

具体步骤:

  1,创建一个类,继承UITextView.取名ZHHTextView;

  2,在drawRect:中实现placeholder,其中用到通知来监听text的change.

大概的步骤就着两步,具体实现,看代码.<一行代码解千言>

现在将.m文件代码公布如下:

#import "ZHHTextView.h"

@implementation ZHHTextView

- (instancetype)initWithFrame:(CGRect)frame {

if (self = [super initWithFrame:frame]) {

NSLog(@"%s",__func__);

//注册通知.要用到通知的用意:监听内容的变化

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewTextChange) name:UITextViewTextDidChangeNotification object:nil];

}

return self;

}

- (void)viewTextChange {

// 执行此方法,系统自动调用drawRect:方法

[self setNeedsDisplay];

NSLog(@"%s",__func__);

}

- (void)dealloc {

//取消通知,你不取消试试,看你的项目会不会崩

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

// Drawing code

// 如果有内容,则返回

if (self.hasText)return;

// 给placeholder添加属性

NSMutableDictionary *attributes = [NSMutableDictionary dictionary];

//这里最好还是要与self.font同步

attributes[NSFontAttributeName] = [UIFont systemFontOfSize:15.0];

attributes[NSForegroundColorAttributeName] = [UIColor grayColor];

// 其实placeholder是画上去的,既然是画上去的,必须给定具体的位置与尺寸

CGFloat x = 5;

CGFloat w = rect.size.width - 2 * x;

CGFloat y = 8;

CGFloat h = rect.size.height - 2 * y;

CGRect placeholderRect = CGRectMake(x, y, w, h);

NSString* placeholder = @"请输入鸿歌的QQ...";

 // 这个方法很经典

[placeholder drawInRect:placeholderRect withAttributes:attributes];

}

@end

OK了.

时间: 2024-10-02 18:55:09

iOS&UITextView中的placeholder属性的相关文章

iOS Dev (60) 怎样实现 UITextView 中的 placeHolder

iOS Dev (60) 怎样实现 UITextView 中的 placeHolder 作者:阿锐 地址:http://blog.csdn.net/prevention - 跟着你的 UITextView 定义一个 UILabel. UILabel *inputPlaceHolder; placeHolder 是当有内容时不显示.无内容时显示.所以能够为所在的实例相应的类实现 UITextViewDelegate 中例如以下方法. - (void)textViewDidChange:(UITex

iOS Dev (60) 如何实现 UITextView 中的 placeHolder

iOS Dev (60) 如何实现 UITextView 中的 placeHolder 作者:阿锐 地址:http://blog.csdn.net/prevention - 跟着你的 UITextView 定义一个 UILabel. UILabel *inputPlaceHolder; placeHolder 是当有内容时不显示,无内容时显示,所以可以为所在的实例对应的类实现 UITextViewDelegate 中如下方法. - (void)textViewDidChange:(UITextV

textArea中的placeholder属性不起作用

问题描述: textarea中加的placeholder属性有给值,但是在jsp页面中没有对应的提示信息显示,如下图所示: 原因: <textarea>与</textarea>之间有间隔,或存在换行: 解决: 具体为什么会这样还不是很清楚呢..

HTML5中的placeholder属性

placeholder属性是HTML5 中为input添加的.在input上提供一个占位符,文字形式展示输入字段预期值的提示信息(hint),该字段会在输入为空时显示. 如 <input type="text" name="loginName" placeholder="邮箱/手机号/QQ号"> 目前浏览器的支持情况 浏览器 IE6/7/8/9 IE10+ Firefox Chrome Safari  是否支持 NO YES YES

Easyui 中的placeholder属性

在 easyui有文档中,没注意还真找不到placeholder属性,因为在属性只在searchbox中提到了, <input id="ss" class="easyui-searchbox" style="width:300px" data-options="searcher:qq,prompt:'Please Input Value',menu:'#mm'"></input>

iOS开发中@property的属性weak nonatomic strong readonly等介绍

@property与@synthesize是成对出现的,可以自动生成某个类成员变量的存取方法.在Xcode4.5以及以后的版本,@synthesize可以省略. 1.atomic与nonatomicatomic:默认是有该属性的,这个属性是为了保证程序在多线程情况,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题.nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率. 2.readwrite与readonlyreadw

在UITextview中添加链接属性的文字

let termsAndPrivacyLabel = UITextView(frame: CGRect(x: 24/2, y: 0, width: width, height: height)) let string = "By signing up, you agree to the Terms of Use & Privacy Policy." let text = NSMutableAttributedString(string: string, attributes:

iOS 设置UITextField的placeholder属性的颜色

NSDictionary *attrDict = @{NSForegroundColorAttributeName : [UIColor redColor]}; NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:textF.placeholder attributes:attrDict]; [textF setAttributedPlaceholder:attrStr]; http://www.jia

自定义textView,增加placeholder属性

iOS文本输入框有两种:UITextField和UITextView.一般情况下,UITextField可以满足我们开发的需求,输入文字,系统自带placeHolder属性,直接用点语法赋值就可以实现功能需求. 然而,有些时候我们可能会用到UITextView,系统提供的UITextView是没有自带placeHolder属性的.想要实现placeHolder样式有至少两种方法: 1.添加一个label当作placeHolder的载体.实现UITextViewDelegate方法,监听文本输入框