UITextView添加Placeholder(swift)

UITextView添加Placeholder(swift)

by 伍雪颖

添加UILabel并初始化

public let placeholderLabel: UILabel = UILabel()

@IBInspectable public
var placeholder: String =
"" {

didSet {

placeholderLabel.text =
placeholder

}

}

@IBInspectable public
var placeholderColor: UIColor =
UIColor(red: 0.0, green:
0.0, blue: 0.0980392, alpha:
0.22) {

didSet {

placeholderLabel.textColor =
placeholderColor

}

}

override public
var font: UIFont! {

didSet {

placeholderLabel.font =
font

}

}

override public
var textAlignment: NSTextAlignment {

didSet {

placeholderLabel.textAlignment =
textAlignment

}

}

addSubview添加上去

override init(frame:
CGRect, textContainer: NSTextContainer?) {

super.init(frame: frame, textContainer: textContainer)

commonInit()

}

required public
init(coder aDecoder: NSCoder) {

super.init(coder: aDecoder)

commonInit()

}

func commonInit() {

NSNotificationCenter.defaultCenter().addObserver(self,

selector: "textDidChange",

name: UITextViewTextDidChangeNotification,

object: nil)

placeholderLabel.font =
font

placeholderLabel.textColor =
placeholderColor

placeholderLabel.textAlignment =
textAlignment

placeholderLabel.text =
placeholder

placeholderLabel.numberOfLines =
0

placeholderLabel.backgroundColor =
UIColor.clearColor()

placeholderLabel.setTranslatesAutoresizingMaskIntoConstraints(false)

addSubview(placeholderLabel)

}

输入文字消失的事件

override public
var text: String! {

didSet {

textDidChange()

}

}

func textDidChange() {

placeholderLabel.hidden = !text.isEmpty

}

时间: 2024-11-05 14:37:30

UITextView添加Placeholder(swift)的相关文章

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

如何扩展UITextView以追加placeholder功能呢? 我们的需求是:追加placeholder功能 方案讨论: 通过继承UITextView的方式 通过扩展UITextView的方式 分析:方案1使用继承方式实现起来更简单,但是使用起来就没有那么方便:方案2 使用扩展的方式,实现起来稍比前者复杂,但是外部使用起来更简单 方案定位:采用扩展的方式,以极简的风格作为参考依据. Tip:所谓极简,即对外接口最简,对内部可以很复杂 扩展头文件 #import <UIKit/UIKit.h>

UITextView添加一个placeholder功能

控件UITextField有个placeholder属性,UITextField和UITextView使用方法基本类似,有两个小区别:1.UITextField单行输入,而UITextView可以多行输入.2.UITextField有placeholder属性,而UITextView没有.至于两者的代理方法,原理基本差不多,只是方法名略有差异. 实现该功能有两种方式 一种是 ①使用通知 显示隐藏遮盖物 ②使用代理 给文本框重新赋值 1.在创建textView的时候,赋值其文本属性 即textVi

实现UITextView的placeholder

我们知道在iOS开发时,控件UITextField有个placeholder属性,UITextField和UITextView使用方法基本类似,有两个小区别:1.UITextField单行输入,而UITextView可以多行输入.2.UITextField有placeholder属性,而UITextView没有.至于两者的代理方法,原理基本差不多,只是方法名略有差异. 如何为UITextView添加一个placeholder功能呢,其实方法很简单,三步即可实现: 1.在创建textView的时候

自定义UITextView的placeholder(占位文字)

我们知道在iOS开发时,控件UITextField有个placeholder属性,UITextField和UITextView使用方法基本类似,有两个小区别:1.UITextField单行输入,而UITextView可以多行输入.2.UITextField有placeholder属性,而UITextView没有.至于两者的代理方法,原理基本差不多,只是方法名略有差异. 如何为UITextView添加一个placeholder功能呢,其实方法很简单,三步即可实现: 1.在创建textView的时候

UITextView实现placeHolder方法汇总

UITextField中有一个placeholder属性,可以设置UITextField的占位文字,起到提示用户的作用.可是UITextView就没那么幸运了,apple没有给UITextView提供一个类似于placeholder这样的属性来供开发者使用.下面我就把自己能够想到的和网友提供的方法汇总一下,让更多的开发者知道,原来有这么多方法可以实现UITextView的占位文字. 方法一: 1.把UITextView的text属性当成“placeholder”使用. 2.在开始编辑的代理方法里

关于UITextField和UITextView的placeholder

1. 大家都知道UITextField支持设置placeholder, 并且可以改变placeholder字体大小和颜色, 参照代码: /* 设置placeholder*/ [textField setPlaceholder:@"placeholder in textField"]; /* 改变placeholder的颜色 */ [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.text

UITextView实现PlaceHolder的方式

实现UITextView实现PlaceHolder的方式的方式有两种,这两种方法的核心就是通过通知来添加和去除PlaceHolder:下面来介绍两种方法:个人比较喜欢第一种,看起来更加合理. 方法1:原理是通过通知来改变PlaceHolder,把PlaceHolder看成是一个UILabel,设置UILabel的透明度,来让Placeholder显示与不显示.这种方法对UITextView本身影响较小.学习自Fly_Elephant:<UITextView实现PlaceHolder的方式>这篇

IOS UITextView加上placeholder

UITextView上如何加上类似于UITextField的placeholder呢,其实在UITextView上加上一个UILabel,然后再实现 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text这个代理方法就可以了. 具体实现如下: - (BOOL)textView:(UITextView *)textView shou

UITextView 实现placeholder的方法

本文转载至 http://www.cnblogs.com/easonoutlook/archive/2012/12/28/2837665.html 在UITextField中自带placeholder属性,可以用于提示输入框信息.但是UITextView并不具备此功能 介绍两种方法来实现: 第一种: 初始化UITextView //首先定义UITextView UITextView *textView = [[UITextView alloc] init]; textView.font = [U