实际App中的登录界面并非由一个一个色块组成,而是由标签(UILabel),输入框(UITextField)和按钮(UIButton)组成.今天我们来看一下UITextField,通过今天的学习,希望我以及大家都能掌握UITextField的使用方法.我们进入主题.
UITextField(输入框):是控制文本输入和显示的控件,在App中UITextField出现频率也很高,iOS系统借助虚拟键盘实现输入,当点击输入框,系统会自动调出键盘,方便我们进一步操作.在你不需要输入,可以使用收回键盘的方法,收回弹出的键盘.
UITextField和UILabel相比,UILabel主要用于文字显示,不能编辑,UITextField允许用户编辑文字(输入).在项目中有很多地方会用到UITextField,例如,输入用户名,密码,手机号,email等等.都是UITextField.按照惯例,我们还是要先知道如何创建UITextField. 和创建UILabel的例子很相似.
1.开辟空间并初始化(如果本类有初始化,使用自己的,否则就使用父类的).
UITextField *userNameTextField = [[UITextField alloc]initWithFrame:CGRectMake(100,100,190,30)];
2.设置文本显示,输入相关的属性
userNameTextField.borderStyle = UITextBorderStyleRoundedRect;
userNameTextField.placeholder = @"用户名";
3.添加到父视图,用以显示
[self.window addSubview:userNameTextField];
4.释放
[userNameTextField release];
UITextField类提供了许多控制输入的API,大家可以看看API,说到API,不得不和大家啰嗦两句,不管你懂不懂英语,都要想办法去了解API,在好的微博或者博客,所有的内容都是从API里得到的,只不过哪些能看明白API的人,把一手资料翻译出来,然后在写出来,我们看了之后就觉得很牛逼,所以如果希望在猿类生存,并且成为牛逼人物,那么API这个砍是一定要跨越的.
UITextField核心功能主要包含3个方面:文本显示,输入控制,外观配置.
文本显示:包括字体颜色,对齐方式,占位符等等.
text 要显示的文本内容 例如: textField.text = @"Jack";
textColor 文本内容的颜色 例如:textField.textColor = [UIColor redColor];
textAlignment 文本的对齐方式(水平方向) 例如:textField.textAlignment = NSTextAlignmentLest;
font 文本字体 例如:textField.font = [UIFont fontWithName:@"Helvetica-Bold" size:20];黑体加粗,20号字.
placeholder 占位字符串(没有任何输入时,给出的提示字符串) textField.placeholder = @"请输入用户名";
输入控制:密码模式,键盘样式,自定义键盘等等.
enabled 是否允许输入 textField.enabled = NO; 不允许输入,不弹出键盘
textField.enabled = YES;默认是YES,允许输入
clearsOnBeginEditing 是否开始输入的时候清空输入框内容 textField.clearOnBeginEidting = YES; 清空
textField.clearOnBeginEiditing = NO;不清空
secureTextEntry 是否文字以圆点格式显示 textField.secureTextEntry = YES;密码模式
textField.secureTextEntry = NO;普通模式
keyboardType 弹出键盘的类型(枚举值) textField.keyboardType = UIKeyboardTypeNumberpad;数字键盘
returnKeyType 键盘右下角return按钮类型(枚举值) textField.returnKeyType = UIReturnKeyNext;
inputView 自定义输入视图(默认是键盘) textField.inputView = myInputView;
inputAccessoryView 输入视图上方的辅助视图(默认nil) textField.inputAccessView = myAccessView;
外观控制:包括边框样式,清楚按钮,辅助视图等.
borderStyle 边框样式(枚举值) textField.borderStyle = UITextBorderStyleRoundedRect;
clearButtonMode 清除按钮模式(枚举值) textField.clearButtonMode = UITextFieldViewModeAlways;总是显示清除按钮
leftView 输入框左视图 textField.leftView = leftView;
leftViewMode 左视图的显示模式 textField.leftViewMode = UITextFieldViewModeAlways;总是显示左视图
rightView 输入框右视图 textField.rightView = rightView;
rightViewMode 右视图的显示模式 textField.rightViewMode = UITextFieldViewModeAlways;总是显示右视图
#pragma mark ----UIButton----
UIButton(按钮):是影响用户点击的控件,在App中UIButton是出现频率很高的控件, UIButton与UILabel,UITextField侧重点不同,侧重于处理点击, 在项目中UIButton会经常使用,例如注册按钮,编辑按钮,分享按钮等等,基本上每个项目都离不开UIButton,所以打起17分的精神好好研究吧. 还是按照惯例,我们来看看如何创建UIButton.
1.创建Button对象(如果本类有初始化方法,使用自己,否则使用父类的).
UIButton *loginButton = [[UIButton buttonWithType:UIButtonTypeSystem];
2.设置按钮显示相关的属性
loginButton.frame = CGRectMake(30,200,60,30);
3.为按钮添加点击事件
[loginButton setTitle:@"登陆" forState:UIControlStateNormal];
[loginButton addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];
4.添加按钮到父视图
[self.window addSubview:loginButton];
UIButton从父类UIControl那继承了控制相关的方法,比如添加事件,移除事件等.
继承方式是:UIButton:UIControl:UIView
UIButton提供了外观控制的API 包括:标题,背景图片,前景图片等
外观控制包含很多方法,我们一一来看.
setTitle:forState 设置指定状态下的标题
[loginButton setTitle:@"登陆" forState:UIControlStateNormal];
titleForState 获取指定状态下的标题
NSString *normalTitle = [loginButton titleForState:UIControlStateNormal];
setTitleColor:forState: 设置指定状态下的标题颜色
[loginButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
titleColorForState: 获取指定状态下的标题颜色
UIColor *normalTitleColor = [loginButton titleColorForState:UIControlStateNormal];
setTitleShadowColor:forState: 设置指定状态下的标题隐隐颜色
[loginButton setTitleShadowColor:[UIColor redColor]forState:UIControlStateNormal];
titleShadowColorForState: 获取指定状态下的标题阴影颜色
UIColor *normalTitleShadowColor = [loginButton titleColorForState:UIControlStateNormal];
setImage:forState: 设置指定状态下的前景图片
[loginButton setImage:[UIImage imageNamed:@"login.png"] forState:UIControlStateNormal];
imageForState 获取指定状态下的前景图片
UIImage *normalImage = [loginButton imageForState:UIControlStateNormal];
setBackgroundImage:forState 设置指定状态下的背景图片
[loginButton setBackgroundImage:[UIImage imageNamed:@"login2.png"]forState:UIControlStateNormal];
backgroundImageForState: 获取指定状态下的背景图片
UIImage *normalBackgroundImage = [loginButton backgroundImageForState:UIControlStateNormal];
写了这么多的方法, 不管以后能不能都用上,现在最起码要混个脸熟,上面的一些有一些是经常用的.
#pragma mark ---delegate---
现在有一个需求就是让在TextField上写完的内容的虚拟键盘可以收回去.这个时候就需要使用delegate,下面我们来看看实现的方法.
点击键盘return按钮实现键盘回收的步骤:
1.将AppDelegate作为UITextField的delegate
2.AppDelegate.h文件接受UITextFieldDelegate协议
3.AppDelegate.m文件实现textFieldShouldReturn:方法
键盘回收代码:
Appdelegate.m
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
以上就是实现的方法,但是UITextField不应该在类内部(.m文件)实现textFieldShouldReturn:方法. 因为有的时候,我们点return的时候,并不总是想回收键盘,例如:有两个输入框,第一个输入完成之后,用户点return按钮,将光标移动到第二个输入框(即:第二个输入框成为第一个响应者). 对于一个View来说,自己只负责触发事件,事件由外界实现,即delegate.