iOS利用runtime为textView添加placeholder属性

UITextView是我们常用的控件,而且很多时候都要为textView设置占位文字,但textView并没有placeholder这个属性,所以只能我们自己想各种办法解决,以下是我利用runtime和KVC两种方法来实现这个功能,如有不对或更好的方法,恳请指出。

runtime实现思路:

1、为textView动态添加placeholder属性

2、为textView动态添加placeholderLabel控件,并把placeholder的值赋给它。

3、监听UITextViewTextDidChangeNotification,根据该通知来设置placeholderLabel相对应的文字属性值。

注意事项:

1、使用runtime动态添加的属性:由于setText:可为nil,所以重写此方法后无法正常赋值,因此如果要立马设置text则需先设置text,再设置占位文,占位文字和text会同时显示出来。

2、用KVC方法,如果要立马设置text则需在设置完占位文字后再设置,不然把text删除后占位文字不会出现,且此方法仅支持8.3及以上的系统版本。

3、runtime方式暂不支持多行,KVC支持多行。

效果图:


iOS利用runtime为textView添加placeholder属性_第1张图片
iOS利用runtime为textView添加placeholder属性_第2张图片

核心代码如下:


iOS利用runtime为textView添加placeholder属性_第3张图片
iOS利用runtime为textView添加placeholder属性_第4张图片
iOS利用runtime为textView添加placeholder属性_第5张图片
iOS利用runtime为textView添加placeholder属性_第6张图片

demo传送门:https://github.com/T-Man007/BGMTextViewPlaceholder

欢迎加QQ交流:1960997571

你可能感兴趣的:(iOS利用runtime为textView添加placeholder属性)