UITextField 和 UITextView

/**

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];

}

你可能感兴趣的:(UITextField 和 UITextView)