⼀、UITextField
二、UIButton
三、delegate
四、程序启动流程
本讲内容
优化登录界⾯面实际App中的登录界⾯面并⾮非是由⼀一个⼀一个⾊色块组成,⽽而是由标签
(UILabel)、输⼊入框(UITextField)和按钮(UIButton)组成。如何优化我们的登录界⾯面呢?
(UILabel)、输⼊入框(UITextField)和按钮(UIButton)组成。如何优化我们的登录界⾯面呢?
⼀、UITextField
UITextField是什么?UITextField(输⼊入框):是控制⽂文本输⼊入和显⽰示的控件。在App中UITextField
出现频率也⽐比较⾼高。
iOS系统借助虚拟键盘实现输⼊入,当点击输⼊入框,系统会⾃自动调出键盘,⽅方便你进⼀一步操作。在你不需要输⼊入的时候,可以使⽤用收回键盘的⽅方法,收回弹出的
键盘。
UITextField和UILabel相⽐比,UILabel主要⽤用于⽂文字显⽰示,不能编辑,UITextField允许⽤用户编辑⽂文字(输⼊入)。
项目中哪些地⽅方会⽤用UITextField?
出现频率也⽐比较⾼高。
iOS系统借助虚拟键盘实现输⼊入,当点击输⼊入框,系统会⾃自动调出键盘,⽅方便你进⼀一步操作。在你不需要输⼊入的时候,可以使⽤用收回键盘的⽅方法,收回弹出的
键盘。
UITextField和UILabel相⽐比,UILabel主要⽤用于⽂文字显⽰示,不能编辑,UITextField允许⽤用户编辑⽂文字(输⼊入)。
项⺫⽬目中哪些地⽅方会⽤用UITextField?
UITextField是什么?UITextField(输⼊入框):是控制⽂文本输⼊入和显⽰示的控件。在App中UITextField
出现频率也⽐比较⾼高。
iOS系统借助虚拟键盘实现输⼊入,当点击输⼊入框,系统会⾃自动调出键盘,⽅方便你进⼀一步操作。在你不需要输⼊入的时候,可以使⽤用收回键盘的⽅方法,收回弹出的
键盘。
UITextField和UILabel相⽐比,UILabel主要⽤用于⽂文字显⽰示,不能编辑,UITextField允许⽤用户编辑⽂文字(输⼊入)。
项目中哪些地⽅方会⽤用UITextField?
如何使⽤用UITextField
创建UITextField与创建UILabel的步骤很相似。
1、开辟空间并初始化(如果本类有初始化⽅方法,使⽤用⾃自⼰己的;否则使⽤用⽗父类的)。
2、设置⽂文本显⽰示、输⼊入相关的属性
3、添加到⽗父视图上,⽤用以显⽰示
4、释放
UITextField使⽤用⽰示例
UITextField *userNameTextField = [[UITextField
alloc] initWithFrame:CGRectMake(100, 100, 190, 30)];
userNameTextField.borderStyle =
UITextBorderStyleRoundedRect;
userNameTextField.placeholder = @"⼿手机号/邮箱";[containerView addSubview:userNameTextField];[userNameTextField release];
UITextField更多UITextField核⼼心功能主要包含3个⽅方⾯面:
⽂文本显⽰示
输⼊入控制
外观配置
二、UIButton
UIButton是什么?UIButton(按钮):是响应用户点击的控件。在App中UIButton是出
现频率很⾼的控件。UIButton与UILabel、UITextField侧重点不同,侧重于处理点按。当
然UIButton类也提供了⼀一些⽅方法控制按钮外观。
项目中哪些地⽅方会⽤用UIButton?
如何使⽤用UIButton
创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。
1、创建button对象(如果本类有初始化⽅方法,使⽤用⾃自⼰己的;否则使⽤用⽗父类的)。
2、设置按钮显⽰示相关的属性
3、为按钮添加点击事件
4、添加按钮到⽗父视图上,⽤用以显⽰示
5、按钮⽆无需释放(因为使⽤用的是类⽅方法创建的button)
UIButton使⽤用⽰示例
UIButton *loginButton = [UIButton
buttonWithType:UIButtonTypeSystem];
loginButton.frame = CGRectMake(30, 200, 60, 30);
[loginButton setTitle:@"登录"forState:UIControlStateNormal];
[loginButton addTarget:self action:@selector(login:)
forControlEvents:UIControlEventTouchUpInside];
[containerView addSubview:loginButton];
UIButton添加事件UIButton从⽗父类UIControl那继承了控制相关的⽅方法,⽐比如添加事
件、移除事件等。
注:UIButton : UIControl : UIView
UIButton添加事件
外观控制
UIButton提供了外观控制的API。包括标题、背景图⽚片、前景图⽚片等
⼩节UIView是所有可视化控件的基类。
UILabel、UITextField、UIButton是具有特定外观特定功能的视图。UILabel侧重于⽂文本的呈现。
UITextField侧重于输⼊入。
UIButton侧重于点击事件处理。
三、delegate
delegate点击键盘上的return按钮,如何去响应事件?
点return回收键盘
点击键盘return按钮实现键盘回收的步骤:
1、将AppDelete作为UITextField的delegate
2、AppDelete.h文件接受UITextFieldDelegate协议
3、AppDelete.m文件实现textFieldShouldReturn:方法
键盘回收代码
AppDelegate.m
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;}
⼩节
UITextField不应该在类内部(.m⽂文件)实现textFieldShouldReturn:,应为有时候,我们点return的时候,并不总是想回收键盘,例如:有两个输⼊入框,第⼀一个输⼊入框输⼊入完成之后,⽤用户点return按钮,将光标移动到第⼆二个输⼊入框(即:第⼆二个输⼊入框称为第⼀一响应者)
对于⼀一个V来说,⾃自⼰己只负责触发事件,事件由外界实现,即delegate。
四、iOS程序启动流程
main函数是程序⼊入⼝口任何⼀一个程序,⽆无论是基于Mac OS还是iOS,程序都是从main.m⽂文
件的main函数开始执⾏行的。
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}
执⾏行UIApplicationMain函数时做了跳转,转到了AppDelete中
UIApplicationMainUIApplicationMain在程序⼊入⼝口函数main函数中调⽤用,主要实现了3个
功能:创建应⽤用程序(UIApplication)实例创建应⽤用程序代理实例
建⽴立事件循环(runloop:死循环,不断检测程序运⾏行状态,是否被触摸、晃动等)
UIApplicationMain剖析
int UIApplicationMain (!
int argc,!
char *argv[],!
NSString *principalClassName,!
NSString *delegateClassName!
);!1、principalClassName:应⽤用程序对象的类名(UIApplication或其⼦子类)!2、delegateClassName:应⽤用程序delegate的类名。(任何接受了UIApplicationDelegate的类)!UIApplicationMain根据上述两个类名创建应⽤用程序实例、应⽤用程序代理实例。
然后建⽴立事件循环(runloop),检测程序的各种事件(程序开始启动,接收到触摸等等)
应⽤用程序代理
应⽤用程序代理,主要检测应⽤用程序的状态并做出相应的处理。
应⽤用程序的状态有很多,⽐比如:程序启动、进⼊入活跃状态、进到后
台、内存警告、收到远程消息等等
任何接受了UIApplicationDelegate协议的对象都可以成为应⽤用程序代理。
⼀一旦应⽤用程序的某种状态触发,就会执⾏行相应的代理⽅方法。
UIApplicationDelegateUIApplicationDelegate是⼀一个OC的协议。⾥里⾯面声明了⼀一堆⽅方法,这些⽅方
法都与应⽤用程序运⾏行状态有关,它们由应⽤用程序代理实现。UIApplication对象负责调⽤用。
!
!
UIApplicationDelegate
UIWindowUIWindow作为应⽤用程序的窗⼝口,在应⽤用程序启动的时候就要加载,各种UI界⾯面都是借助window来呈现的。
UIWindow在创建的时候,应该和屏幕⼀一样⼤大。通过[UIScreenmainScreen].bounds可以获得屏幕⼤大⼩小。
[self.window makeKeyAndVisible];//让window变的可视,即显⽰示window。
总结UILabel、UITextField、UIButton都是特别常⽤用的控件。
他们都是直接或者间接继承于UIView,只是外观和功能不同。熟悉各种控件的特点和⽅方法是我们后期做项目的保障。delegate是iOS重要的设计模式,理解它的原理,有助于写出优质代码
main函数是程序的⼊入⼝口。UIApplicationMain函数创建了应⽤用程序实例,应⽤用程序代理实例,建⽴立事件循环。
课程预告
⾃自定义视图
视图控制器