回顾:
1. IB
1.1 格式xib,保存设置
1.2 创建vc实例时,指定加载某一个xib,则系统通过读取xib自动的创建并添加控件,所有这些创建动作都会在viewDidLoad之前完成。
1.3 IBOutlet、IBAction
2. 基本控件
2.1 UIStepper
2.2 UISlider
2.3 UISwitch
2.4 UITextField
今天:
0. 键盘是如何弹起的?
0.1 事件的响应机制与过程
1> 查找hitView
发送hitTest消息
2> 事件响应
step1:当用户点击屏幕时,系统最先开始一个查找hitTest的过程,从外向内,逐级定位,window先给自己的所有直接子视图发hitTest消息,由子视图判断触点释放在自己的区域内,不在,则返回nil,在则子视图判断自己是否还有子视图,有,则继续发hitTest消息,直到,有某一个子视图不在包含其他子视图,并且触点还在这个子视图范围内,则返回自己
step2:找到hitView之后,先从hitView开始判断该视图是否提供了针对事件的响应,如果有,则执行,如果没有提供响应的话,则将事件向上传递,父容器提供了事件响应,则执行,无响应,则再继续,遵循这样的传递路径:
view->super view->supe view->vc->window->appDelegat,如果代理类也没有提供响应,则将该事件抛弃。
0.2 键盘为什么弹起?
当用户的触点刚好是一个文本框时,系统找到hitView发现类型为UITextField,则强制这个文本框必须成为本次点击的响应者,叫做第一响应者,一旦某文本框成为了第一响应者,系统就会自动弹出键盘。
成为第一响应者可以有两种方式:
第一:用户点击之后,自动成为第一响应者
第二:使用代码强制某文本框成为第一响应者 becomeFirstResponder
1. 如何关闭键盘
1.1 方式一:
让文本框放弃第一响应者的身份即可
textField resignFirstResponder
1.2 方式二:
设置文本框所在的父视图,结束编辑状态即可
view endEditing:YES
2. 关闭键盘的时机
2.1 时机一:
点击键盘右下键 返回 按键
为文本框添加一个事件——Did End On Exit ,
2.2 时机二
点击屏幕中空白部分
重写控制器的 touchesBegan方法
3. UIAlertView 警告框
作用:阻碍应用程序继续,给出关键性的提示
如何使用:
(1)创建警告框,定制界面
(2)show出来
如何响应用户点击按钮动作
(1)设置当前控制器为alertView的代理
(2)让当前控制器遵守协议
(3)找到协议中合适的方法(从方法名上判断方法的执行时机,找到与要响应的事件最符合的那个方法),实现该方法
注意:协议中的每一个方法,第一个参数一定是委托方自己,这样的好处是代理方受到消息时,可以通过第一参数直到委托方是谁
警告框: 为用户提供警觉性的重要信息的一种界面交互元素
特点:模态形式显示,不关闭无法继续其他操作
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"警告消息" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
4. UIActionSheet 操作表
作用:为用户的操作提供多个选项,最无害的取消按钮会出现在最底部,危险性的按钮以红色字体出现在列表的顶部,从上至下,按钮的index依次为0,1,2...
如何使用:
(1)创建actionSheet,定制界面
(2)showInView的方式来显示
(3)控制器实现clickedButtonAtIndex方法
5. 委托模式(设计模式)
(1)现实生活
参与方:两方,主动方也叫委托方,被动做事的一方叫做代理方
两者之间的关系:委托方可以让代理方帮助他完成某些事情
(2)代码世界
理念:系统定义的某些界面类,只负责显示,如果与用户有了交互动作,那么针对该动作的处理,界面无法完成,需要交给代理方来实现,所以,就需要一些自定义的类来充当代理方。
实现的步骤:
(1)将某一个对象设置为代理方
(2)代理方遵守协议
(3)代理方实现的方法
6. MVC设计模式
4.1 什么是MVC设计模式?
参与方:三方
M:Model 模型层
V:View 视图层
C:Controller 控制器层
各方的作用:
V:负责显示,接受用户的输入及操作
M:数据模型(构建一种存数据的结构) 业务模型(用于描述软件的业务是什么)
C:负责数据的传递(将V中接受的输入传给M,由M进行处理,将M中处理完的结果显示到V上)
解决的问题:高内聚,低耦合
作业:
1. Message练习
界面如下:
[输入框][发送按钮]
(1)当点击发送按钮后,界面上会出现一个UILable,内容就是在输入框中得内容,此时要求,收起键盘,清空输入框
(2)当用户单击键盘右上角的按钮时,功能和1相同
(3)label设置为宽280高40 距离左边20个点,上下距离10个点
(4)label不重合
2. 界面如下:
[输入框 账号]
[输入框 密码]
[登陆 按钮]
[UILabel 显示当前状态,已经登陆则显示用户名,没登陆显示未登录]
(1)用户输入完用户名和密码后,单击登录按钮,判断用户名和密码是否正确,如果正确,则在label上显示用户名,如果错误,显示未登陆
(2)当用户没有添加用户名或密码时,单击登陆,则提醒用户输入用户名或密码
(3)第一个文本框支持Next功能,第二个文本框右下角按键显示Done,点击Done按钮和点击登陆按钮功能相同。
MVC作业 翻牌游戏