iOS组件之UITextField详解
引言
UITextField对象是显示可编辑的文本,当用户按下键盘上的return按钮发送一个动作消息到目标对象,UITextField继承于UIControl(有关UIControl请参照《iOS组件之UIControl详解》)。
除了其基本的文本编辑行为,UITextField类还提供了清除当前文本内置按钮等一些功能。
目录
1、基本属性及方法
2、重写方法实现定制化UITextfiled
3、第一响应设置
4、UIView的UITextField的扩展属性
5、UITextFieldDelegate代理协议(可选)
1、基本属性及方法
// 设置文本内容
NSString *text;
// 设置文本显示属性(iOS6.0)
NSAttributedString *attributedText;
// 设置字体颜色
UIColor *textColor;
// 设置字体
UIFont *font;
// 内容的对齐方式(默认为NSLeftTextAlignment)
NSTextAlignment textAlignment;
// 设置边框样式,只有设置了才会显示边框样式
UITextBorderStyle borderStyle;
// 设置文本的显示属性(iOS7.0)
NSDictionary *defaultTextAttributes;
// 当输入框没有内容时,水印提示
NSString *placeholder;
// (iOS 6.0)
NSAttributedString *attributedPlaceholder;
// 再次编辑就清空(默认为NO)
BOOL clearsOnBeginEditing;
// 设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动
BOOL adjustsFontSizeToFitWidth;
// 设置自动缩小显示的最小字体大小
CGFloat minimumFontSize;
// 设置代理
id<UITextFieldDelegate> delegate;
// 设置背景图片
UIImage *background;
// 设置背景
UIImage *disabledBackground;
// 是否正在编辑(只读)
BOOL editing;
// (iOS 6.0)
BOOL allowsEditingTextAttributes;
// (iOS 6.0)
NSDictionary *typingAttributes;
// 输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容
UITextFieldViewMode clearButtonMode;
//
UIView *leftView;
UITextFieldViewMode leftViewMode;
UIView *rightView;
UITextFieldViewMode rightViewMode;
2、重写方法实现定制化UITextfiled
//重写来重置边缘区域
- (CGRect)borderRectForBounds:(CGRect)bounds;
// 重写来重置文字区域
- (CGRect)textRectForBounds:(CGRect)bounds;
// 重写来重置占位符区域
- (CGRect)placeholderRectForBounds:(CGRect)bounds;
// 重写来重置编辑区域
- (CGRect)editingRectForBounds:(CGRect)bounds;
// 重写来重置clearButton位置,改变size可能导致button的图片失真
- (CGRect)clearButtonRectForBounds:(CGRect)bounds;
//
- (CGRect)leftViewRectForBounds:(CGRect)bounds;
- (CGRect)rightViewRectForBounds:(CGRect)bounds;
- (void)drawTextInRect:(CGRect)rect;
- (void)drawPlaceholderInRect:(CGRect)rect;
3、第一响应设置
UIView *inputView;
UIView *inputAccessoryView;
BOOL clearsOnInsertion NS_AVAILABLE_IOS(6_0);
4、UIView的UITextField的扩展属性
- (BOOL)endEditing:(BOOL)force;
5、UITextFieldDelegate代理协议(可选)
// 返回一个BOOL值,指定是否循序文本字段开始编辑
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
// 开始编辑时触发,文本字段将成为first responder
- (void)textFieldDidBeginEditing:(UITextField *)textField;
//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder 要想在用户结束编辑时阻止文本字段消失,可以返回NO.这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;
// 结束编辑
- (void)textFieldDidEndEditing:(UITextField *)textField;
//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。 //这对于想要加入撤销选项的应用程序特别有用 //可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。 //要防止文字被改变可以返回NO //这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
//返回一个BOOL值指明是否允许根据用户请求清除内容.可以设置在特定条件下才允许清除内容
- (BOOL)textFieldShouldClear:(UITextField *)textField;
//返回一个BOOL值,指明是否允许在按下回车键时结束编辑
- (BOOL)textFieldShouldReturn:(UITextField *)textField;