Objective-UI UITextField,UIButton,delegate程序启动流程

实际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.

总结:UILabel UITextField,UIButton都是特别常用的控件.他们都是直接或者间接继承于UIView,知识外观和功能不同,熟悉各种控件的特点和方法是我们后期做项目的保障. delegate是iOS重要的设计模式,理解它的原理,有助于写出优质代码.

posted @ 2015-04-17 22:00  why2wm  阅读(268)  评论(0编辑  收藏  举报