您的位置:首页 > 产品设计 > UI/UE

UITextField用法大全

2015-08-14 14:48 381 查看
#import “AppDelegate.h”

@interface AppDelegate ()

@property (nonatomic, retain) UITextField *textField;

@property (nonatomic, retain) UITextField *textField2;

@end

@implementation AppDelegate

(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

pragma mark - 文字属性

//创建textfield并设置位置及大小

self.textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 150, 30)];
[self.window addSubview:self.textField];


//输入框中一开始就有的文字

self.textField.text = @"";


//属性文本, 分配一个新值给这个属性, 用同样的字符串数据取代这个文本属性

self.textField.attributedText = [[NSAttributedString alloc] initWithString:@""];


//当输入框没有内容时,水印提示 (默认使用70%灰色)

self.textField.placeholder = @"WELCOME";


//当输入框没有内容时, 分配一个新值给这个属性, 用同样的字符串数据取代这个占位符属性

//textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@""];


//默认情况下, 该属性返回值为一个文本属性的字典,

self.textField.defaultTextAttributes = @{};


//设置输入框内容的字体样式和大小

self.textField.font = [UIFont fontWithName:@"黑体" size:20];
//textField.font = [UIFont systemFontOfSize:20];


//设置字体颜色

self.textField.textColor = [UIColor redColor];


//设置输入框的背景颜色

self.textField.backgroundColor = [UIColor whiteColor];


//文本对齐方式

self.textField.textAlignment = 1;
/*
enum {
NSTextAlignmentLeft      = 0, 文本向左对齐
NSTextAlignmentCenter    = 1, 文本居中
NSTextAlignmentRight     = 2, 文本向右对齐
NSTextAlignmentJustified = 3, 调整文本,以便在段落的最后一行是自然对齐。
NSTextAlignmentNatural   = 4, 使用与当前脚本关联的默认对齐方式。
};
typedef NSInteger NSTextAlignment;
*/


//类型属性, 新的文本会被用户输入, 如果textField不是编辑模式, 属性值为空, 同样, 你不能向属性赋值除非textField是编辑模式

self.textField.typingAttributes = @{};


pragma mark - 文字大小

//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动,

//如果你设置为YES, 你也需要通过minimumFontSize属性来设置最小字体大小

self.textField.adjustsFontSizeToFitWidth = YES;


//设置自动缩小显示的最小字体大小

self.textField.minimumFontSize = 10;


pragma mark - 编辑行为

//再次编辑就清空 默认为NO

self.textField.clearsOnBeginEditing = YES;


//是否插入文本取代先前内容, 默认为NO

self.textField.clearsOnInsertion = NO;


//是否允许编辑文本属性, 默认为NO

self.textField.allowsEditingTextAttributes = NO;


pragma mark - 设置视图背景

//设置边框样式

self.textField.borderStyle = UITextBorderStyleRoundedRect;
/* 
typedef enum {
UITextBorderStyleNone, 无边框样式, 默认为无
UITextBorderStyleLine, 边框样式为矩形
UITextBorderStyleBezel, 边框样式为表圈, 此样式通常被用在标准数据       输入
UITextBorderStyleRoundedRect 边框样式为四边有弧度的圆矩形
} UITextBorderStyle;
*/


//设置背景图片,如果使用了自定义的背景图片边框会被忽略掉

self.textField.background = [UIImage imageNamed:@""];


//设置背景图片, 如果background属性没有被设置, 此属性会被忽略

self.textField.disabledBackground = [UIImage imageNamed:@""];


pragma mark - 覆盖视图

//清除文本模式,用于一次性删除输入框中的内容

self.textField.clearButtonMode = UITextFieldViewModeAlways;
/*
typedef enum {
UITextFieldViewModeNever, 从不出现
UITextFieldViewModeWhileEditing, 编辑时出现
UITextFieldViewModeUnlessEditing, 除了编辑外都出现
UITextFieldViewModeAlways  一直出现
} UITextFieldViewMode;
*/


//左视图模式, 用于在何时出现该视图, 与清除文本模式相同

self.textField.leftViewMode = UITextFieldViewModeWhileEditing;


//设置左视图, 不要忘了打开视图模式

UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 30)];
leftView.backgroundColor = [UIColor redColor];
self.textField.leftView = leftView;
[leftView release];


//右视图模式, 用于在何时出现该视图, 与清除文本模式相同

self.textField.rightViewMode = UITextFieldViewModeWhileEditing;
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(140, 0, 10, 30)];
rightView.backgroundColor = [UIColor redColor];
self.textField.rightView = rightView;
[rightView release];


pragma mark - 绘画界面

/* 下列方法, 不可以直接调用, 需要的话可以重写此方法, 返回值都为CGRect */

//– textRectForBounds:    重写来重置文字区域

//- drawTextInRect:       改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.

//- placeholderRectForBounds: 重写来重置占位符区域

//– drawPlaceholderInRect:  重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.

//– borderRectForBounds:  重写来重置边缘区域

//– editingRectForBounds:  重写来重置编辑区域

//– clearButtonRectForBounds:  重写来重置clearButton位置,改变size可能导致button的图片失真

//– leftViewRectForBounds: 重写来重置左视图区域

//– rightViewRectForBounds: 重写来重置右视图区域


pragma mark - 代替输入

// inputView: 代替标准的系统键盘

// inputAccessoryView: 编辑时显示在系统键盘或用户自定义的inputView上面的视图

UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 20)];
inputView.backgroundColor = [UIColor redColor];
self.textField.inputAccessoryView = inputView;


//输入安全属性, 默认为NO

//textField.secureTextEntry = YES;


//自动更正功能

self.textField.autocorrectionType = UITextAutocorrectionTypeDefault;
/*
typedef NS_ENUM(NSInteger, UITextAutocorrectionType) {
UITextAutocorrectionTypeDefault,
UITextAutocorrectionTypeNo,
UITextAutocorrectionTypeYes,
};
*/


pragma mark - 键盘相关 (键盘commond + K 弹出与收回)

//设置键盘的样式

self.textField.keyboardType = UIKeyboardTypeDefault;
/*
typedef enum {
UIKeyboardTypeDefault,      默认键盘,支持所有字符
UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘
UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符
UIKeyboardTypeURL,            URL键盘,支持.com按钮 只支持URL字符
UIKeyboardTypeNumberPad,             数字键盘
UIKeyboardTypePhonePad,   电话键盘
UIKeyboardTypeNamePhonePad,  电话键盘,也支持输入人名
UIKeyboardTypeEmailAddress,  用于输入电子 邮件地址的键盘
UIKeyboardTypeDecimalPad,    数字键盘 有数字和小数点
UIKeyboardTypeTwitter,       优化的键盘,方便输入@、#字符
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
} UIKeyboardType;
*/


//首字母是否大写

self.textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
/*
typedef enum {
UITextAutocapitalizationTypeNone, 不自动大写
UITextAutocapitalizationTypeWords, 单词首字母大写
UITextAutocapitalizationTypeSentences, 句子的首字母大写
UITextAutocapitalizationTypeAllCharacters, 所有字母都大写
} UITextAutocapitalizationType;
*/


//设置return键

self.textField.returnKeyType =UIReturnKeyDefault;
/*
typedef enum {
UIReturnKeyDefault, 默认 灰色按钮,标有Return
UIReturnKeyGo,     标有Go的蓝色按钮
UIReturnKeyGoogle,标有Google的蓝色按钮,用语搜索
UIReturnKeyJoin,标有Join的蓝色按钮
UIReturnKeyNext,标有Next的蓝色按钮
UIReturnKeyRoute,标有Route的蓝色按钮
UIReturnKeySearch,标有Search的蓝色按钮
UIReturnKeySend,标有Send的蓝色按钮
UIReturnKeyYahoo,标有Yahoo的蓝色按钮
UIReturnKeyYahoo,标有Yahoo的蓝色按钮
UIReturnKeyEmergencyCall, 紧急呼叫按钮
} UIReturnKeyType;
*/


//设置键盘外观

self.textField.keyboardAppearance=UIKeyboardAppearanceDefault;
/*
typedef enum {
UIKeyboardAppearanceDefault, 默认外观,浅灰色
UIKeyboardAppearanceAlert,   深灰 石墨色

} UIReturnKeyType
*/


pragma mark - 访问代理

//设置代理 用于实现协议, 需要先签写

self.textField.delegate = self;


/* 代理详情请看 “#pragma mark * 访问代理” /

/* 创建另一个对象 */

self.textField2 = [[UITextField alloc] initWithFrame:CGRectMake(100, 200, 150, 30)];
self.textField2.placeholder = @"OK";
self.textField2.borderStyle = UITextBorderStyleRoundedRect;
self.textField2.textAlignment = 1;
self.textField2.delegate = self;
[self.window addSubview:self.textField2];

return YES;


}

pragma mark ** 访问代理

//管理编辑

/* 文本框应该开始编辑 BOOL值 */

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

{

// return NO; /* 如果返回值为NO, 相当于禁止编辑 */

return YES;

}

/* 文本框已经开始编辑 */

- (void)textFieldDidBeginEditing:(UITextField *)textField

{

}

/* 文本框应该结束编辑 BOOL值 */

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

{

return YES;

}

/* 文本框已经结束编辑 */

- (void)textFieldDidEndEditing:(UITextField *)textField

{

}

//编辑文本

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。

//这对于想要加入撤销选项的应用程序特别有用

//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。

//要防止文字被改变可以返回NO

//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中

return YES;

}

/* 是否允许根据用户请求清除内容, 可以设置在特定条件下才允许清除内容 */

- (BOOL)textFieldShouldClear:(UITextField *)textField

{

return YES;

}

(BOOL)textFieldShouldReturn:(UITextField *)textField

{

if (self.textField == textField) {

[self.textField2 becomeFirstResponder]; /* return键或回车键, 自动跳到下一个输入文本框 */

} else if (self.textField2 == textField)

{

[self.textField2 resignFirstResponder]; /* 按return键或回车键, 键盘往下收 becomeFirstResponder */

}

return YES;

}

/* 点击空白区域回收键盘 */

- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event

{

[self.window endEditing:YES];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uitextfield ios