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;





Comments