/**
UITextField:
1.文字永远是一行,不能显示多行文字
2.有placehoder属性设置占位文字
3.继承自UIControl
4.监听行为
1>设置代理
2> addTarget:action:forControlEvents:
3>通知:UITextFieldTextDidChangeNotification
UITextView:
1.能显示任意行文字
2.不能设置占位文字
3.继承自UIScollView
4.监听行为
1>设置代理
2>通知:UITextViewTextDidChangeNotification
*/
当需要有占位文字并可以多行显示时,可以自定义UITextView,继承自UITextView,让后向其中添加一个UILabel即可,或者重写drawRect:方法:
- (void)drawRect:(CGRect)rect
{
//[HWRandomColor set];
//UIRectFill(CGRectMake(20, 20, 30, 30));
//如果有输入文字,就直接返回,不画占位文字
if(self.hasText) return;
//文字属性
NSMutableDictionary* attrs = [NSMutableDictionarydictionary];
attrs[NSFontAttributeName] = self.font;
attrs[NSForegroundColorAttributeName] = self.placeholderColor?self.placeholderColor:[UIColorgrayColor];
//画文字
//[self.placeholder drawAtPoint:CGPointMake(5, 8) withAttributes:attrs];
CGFloatx =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);
[self.placeholder drawInRect:placeholderRect withAttributes:attrs];
}
网友评论