常用属性及方法总结
文字属性
- text //文本内容
- placeholder //默认使用70%灰色
- font //字体
- textColor //文本颜色
- textAlignment UITextAlignmentLeft;//默认就是左对齐,这个是UITextField扩展属性
文字大小
- adjustsFontSizeToFitWidth adjustsFontSizeToFitWidth = YES; //自适应大小
- minimumFontSize //自适应最小的size
- contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 垂直居中
-
contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 水平居中
编辑行为
- editing //是否正在编辑(read-only)
- clearsOnBeginEditing clearsOnBeginEditing = NO;//设置为YES当用点触文本字段时,字段内容会被清除
- passwdField.secureTextEntry = YES;//密码类型
- autocorrectionType = UITextAutocorrectionTypeNo; //自动纠错
展现形态
- borderStyle //默认UITextBorderStyleNone,是UITextBorderStyleRoundedRect时自定义的background无效
- background //背景色
- disabledBackground property //background未设置时,这个会无效
覆盖视图
- clearButtonMode clearButtonMode = UITextFieldViewModeUnlessEditing;//右边显示的'X'清楚按钮
- leftView //像clearButton那样的视图,不过在左边,不要忘了设置mode
- leftViewMode
- rightView //默认覆盖clearButton
- rightViewMode
访问代理
- delegate property
绘画界面
以下都不应直接调用,需要的话可以重写
- – textRectForBounds: //重写来重置文字区域
- – drawTextInRect: //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
- – placeholderRectForBounds: //重写来重置占位符区域
- – drawPlaceholderInRect: //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
- – borderRectForBounds: //重写来重置边缘区域
- – editingRectForBounds: //重写来重置编辑区域
- – clearButtonRectForBounds: //重写来重置clearButton位置,改变size可能导致button的图片失真
- – leftViewRectForBounds:
- – rightViewRectForBounds:
代替输入
- inputView //代替标准的系统键盘
- inputAccessoryView //编辑时显示在系统键盘或用户自定义的inputView上面的视图
UITextFieldBorderStyle
typedef enum {
UITextBorderStyleNone,//无框
UITextBorderStyleLine,//线框
UITextBorderStyleBezel,//bezel风格线框
UITextBorderStyleRoundedRect//圆角边框
} UITextBorderStyle;
UITextFieldViewMode
typedef enum {
UITextFieldViewModeNever, //从来不出现
UITextFieldViewModeWhileEditing, //编辑时出现
UITextFieldViewModeUnlessEditing,//除了编辑时,其他都出现
UITextFieldViewModeAlways//一直出现
} UITextFieldViewMode;
Notifications
UITextFieldTextDidBeginEditingNotification
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification
委托事件
@protocol UITextFieldDelegate <NSObject>
@optional
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; // 返回NO则不许编辑
- (void)textFieldDidBeginEditing:(UITextField *)textField; // became first responder
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField; // 返回YES允许结束并且resign first responder status. 返回NO不许编辑状态结束
- (void)textFieldDidEndEditing:(UITextField *)textField; // 上面返回YES后执行;上面返回NO时有可能强制执行(e.g. view removed from window)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // 返回NO不改变
- (BOOL)textFieldShouldClear:(UITextField *)textField; // clear button事件,返回NO过滤之
- (BOOL)textFieldShouldReturn:(UITextField *)textField; // 'return' key事件.返回NO过滤之
设置字数限制:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{
if ([string isEqualToString:@"\n"])
{
return YES;
}
NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if (self.myTextField == textField)
{
if ([toBeString length] > 20) {
textField.text = [toBeString substringToIndex:20];
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] autorelease];
[alert show];
return NO;
}
}
return YES;
}