一、介绍UIPickViewUIDatePicker(了解)

1.UIPickView什么时候用?

  通常在注册模块,当用户需要选择一些东西的时候,比如说城市,往往弹出一个PickerView给他们选择。

2.UIPickView常见用法,演示实例程序
  1> 独立的,没有任何关系  => 菜单系统。
  2> 相关联的,下一列和第一列有联系=> 省会城市选择
  3> 图文并帽,=> 国旗选择。

3.UIPickView

4.UIDatePicker什么时候用?
   当用户选择日期的时候,一般弹出一个UIDatePicker给用户选择。
5.UIDatePickerios6和ios7的区别

 

 二、点餐系统PickerView(熟悉)

1.搭建界面

  1> 注意点:PickerView的高度不能改,默认162,PickerView里面每行的高度可以改,不要弄混淆了。

2.pickerView显示数据
  1> 如何使用PickerView展示数据?
    进入PickerView头文件,有数据源和代理,联想到UITableView,模仿UITableView的用法。

  2> 让控制器作为PickerView的数据源,控制器遵守PickerView的数据源方法
    2.1> 两种方式:1.拖线  2.代码
    2.2> 系统自带的控件,数据源和代理属性不需要IBOutlet,也能拖线。自己的属性,想要拖线,必须写IBOutlet。
  3>  PickerView的数据源方法 
    1> numberOfComponentsInPickerView:  返回多少列
    2> pickerView:numberOfRowsInComponent:  返回第component列有多少行
    3> 和UITableView的区别,每一行长什么样,是由PickerView的代理决定的。
    4> 注意:如果没有返回每一行长什么样子,每行就会显示?,看见?,就知道没有实现每一行长什么样子的方法。
  4> PickerView的代理方法
    1>  返回第component列第row行长什么样。
      第component列第row行的展示标题
      - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
      第component列第row行带属性的标题
      - (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component
      第component列第row行展示的视图
      - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

三、选择国旗(熟悉) 

1.搭建界面
2.设置pickerView的数据源
3.分析有多少列,只有一列,因为是文字和图片是同时滚动,如果两列的话,不会同时滚动
  plist是个数组:返回这一列有多少行国旗
  数组里是一个字典:描述着国旗的属性
4.加载plist数据,分析数据结构
5.字典转模型
6.有了数据就需要把数据展示到界面,不能用返回每行标题的方法
7.搞一个View,每行需要展示一个标题和图片
8.自定义view,系统自带的UIView,不好使
9.用xib描述自定义view,里面控件是固定的
10.设置每行的高度为44
11.返回每行cell样子的代理方法,reusingView在ios7没有效果,view永远都是空,没有做缓存。

四、键盘处理(熟悉)

1.搭建界面
2.文本框不可以让用户编辑

 2.1 不能设置enable = NO,键盘不能弹出来
 2.2 通过代理,不允许用户输入,只有生日和城市不需要用户输入,添加一个判断

3.自定义生日键盘

  3.1 UIDatePicker基本使用,模式,地区
  3.2监听UIDatePicker的事件,继承UIControl,直接addTarget
  3.3日期格式对象,把date转换字符串,显示到文本框

4.自定义城市键盘

  4.1 UIPickerView,展示数据需要设置数据源和代理plist是个数组,表示有多少个省份数组里是一个字典,里面包含省份的信息,名称和城市列表
  4.2解析plist数据,分析数据结构
  4.3 实现数据源和代理,把数据展示到视图
  4.4 和之前的点餐不一样,之前直接能获取到每一列有多少行,这里需要判断当前是哪一列,根据第0列获取第1列的行数,第0列是省,第1列是城市,城市由省决定
  4.5 返回第component列多少行

    
4.6 返回第component列第row行的标题,这里的行号可能是第0列的和第
  1列的,需要做判断。第0列的row,表示是哪个省,第1列的row,表示是当前第1列选中的省会的哪个城市。

  第0列,省会的标题,取决于省会数组行号
  第1列,城市的标题,取决于当前选中哪个省

       

4.7 解决二级联动的问题,两列同时滚动,会报角标越界错误原因:返回每一行的样子的代理方法会经常调用,只要有新的一行
出现就会调用。这里每次都会获取最新选中的省,而第0列展示的是之前选中的省会,如果最新选中的省会的城市总数小于之前选中
的省会。假设:最新选中的城市只有有4个,但是之前选中的省会城市有10行,当第1列滚到5就会报角标越界错误。
解决方式:这里不能获取最新的选中省会,需要记录之前选中的,且只需要记录一次,在选中一行的代理方法里记录。
注意:在刷新城市之前记住省会角标,应该刷新的城市,是当前选中的省会的城市。

4.8 监听城市选择,选中新的省会。

1> 记录选中的省会
 2> 刷新第1列
 3> 第一列默认选中第一个城市
 4> 把选中的省会和获取选中的城市显示到文本框

5.添加自定义键盘工具条

  5.1 封装工具条:继承UIView,原因:不让外界知道里面是什么东西,就不能修改Toolbar里面的东西。
  5.2固定的,用xib᧿述,并且ᨀ供类方法快速创建对象
  5.3整个文本框应该拥有同一个键盘工具条,懒加载一个键盘工具条,然后遍历所有的文本框,搞个可变数组把所有文本框添加到数组
  5.4监听item点击,通过代理通知控制器
  5.5当点击下一个,应该是后面的文本框有弹出键盘,成为第一响应者,怎么判断下一个文本框是谁?

    把所有文本框加入到数组中,记录当前弹出键盘的文本框所在的角标,++就是下一个文本框了。

    在文本框开始编辑的时候,记录,编辑的文本框就是弹出键盘的文本框
  5.6 解决角标越界的问题,当当前弹出键盘的文本框是第一个角标的时候,上一个不允许点击

 五、项目中的常见文件

1.Texts文件夹:单元测试
 2.Frameworks:依赖的框架
  为什么要搞个配置文件,保存应用的信息,软件名称等等,相当于身份证。程序加载首先加载配置文件,读取软件名称等信息。

3.Info.plist:项目配置文件,PPT演示

  3.1> Bundle display name:项目名称
  3.2> Bundle identifier:项目的唯一标识
  3.3> Bundle version:项目版本

4.Info.plist对应xcode的project的图形界面,改图形界面的东西,就会改变Info.plist。比如方向等

为什么要搞个pch文件,提需求,如果一个宏,很多文件都需要用到,怎么解决,搞个公用的头文件,同时导入这个头文件。

5.1pch作用:

1> 放一些全局的宏
2> 导入一些全局都需要的头文件,一般开发中放工具类的头文件,或者分类头文件等。
3> 管理日志输出
  为什么要管理日志输出,因为日志输出非常耗性能,一般发布的时候不需要日志输出,只有调试的时候才需要。

5.2 通常开发中弄一个自己的日志输出,不要系统自带的NSLog

  #define CZLog(...) NSLog(__VA_ARGS__)
  …表示能接收任何参数
  __VA_ARGS__ 表示左边...的参数会替代到右边NSLog中。
1> 如果不想打印了,直接注释后边的 
  #define CZLog(...) //NSLog(__VA_ARGS__)
2> 还可以通过一个宏进行条件编译,在调试阶段,xcode会自动定义一个DEBUG宏,利用这个宏,就能进行条件编译.

5.3 在pch写的有关OC的东西,最好放在#ifdef __OBJC__,Xcode在每个OC文
  件中都定义了这个宏,也就意味着只有OC中的文件才拥有这些宏,避免项目中有C文件的时候,报错。
5.4 如果在c文件中,使用#import,就会报错,因为c文件不能识别#import,
  只有OC文件才能识别。在pch中的东西能被项目中的所有文件共享,c文件共享#import就报错。

 六、UIApplication

1.什么是UIApplication?PPT演示

注意:UIApplication不能手动创建,不能alloc init,一个应用程序只允许一个。
为什么要弄成单例,UIApplication对象是用来设置应用全局信息的,一个
应用程序如果有很多UIApplication对象,都不知道听谁的。
验证:单例和不能alloc,init

2.UIApplication的作用:做应用级别的操作

  2.1> 设置应用图标右上角的数字,图标需要手动清除,应用程序关闭,不会自动清除.

    applicationIconBadgeNumber  
  2.2> 显示联网状态,告诉用户此应用正在联网

    networkActivityIndicatorVisible
  2.3> 打开一个资源
     3.1> 网络资源URL的组成== 协议头://主机域名/路径
    http://www.baidu.com/abc/1.png
  3.2> 本地资源URL的组成== 协议头:///路径  本机域名可以不写

     file:///User/apple/Desktop/1.png

4.UIApplication打开资源的好处:不用判断用什么软件打开,系统会自动根据协议头判断。

5.UIApplication管理状态栏.

  5.1>  ios7默认交给控制器,需要配置下,不交给控制器管理,就会交个UIApplication管理。
  5.2> 动画隐藏状态栏
  5.3> 动画设置状态栏样式

七、UIApplication的Delegate

1.AppDelegate的作用:PPT演示

  为什么要搞个AppDelegate,代理设计模式,有些事情自己不想处理,交给别人处理
  怎么成为UIApplication的代理,遵守协议。
2.在哪设置UIApplication的代理,需要了解ios程序的启动过程.
  2.1> 创建application,创建并且设置application的代理
  2.2>  开启事件循环,不断监听事件。如果产生系统事件,就会通知代理,其他事件,会找到一个最合适的视图处理事件。
  2.3> 只有应用程序关闭,才会结束程序
3.UIApplicationMain函数:PPT演示
  注意UIApplicationMain函数会开启一个事件循环,并不会马上就执行完毕。
  底层做的事情,创建UIApplication对象和UIApplicationDelegate对象,设置UIApplication的代理,开启事件循环,监听系统事件。
  3.1> delegateClassName不能传nil,这里传nil,意味着application没有代理,就无法监听系统的事件,系统的事件都没法监听,窗口都不知道
    什么时候去加载,因为视图都是懒加载的,因此就不会创建窗口,什么东西都没有。
  3.2> principalClassName传nil,默认是UIApplication,创建一个UIApplication对象。
4.UIApplication代理的作用:处理系统事件,不是任何事件都交给他处理,按钮点击,屏幕点击都不是他处理,是由UIApplication处理。
  2.1> 加载完成,初始化的操作
  2.2> 进入后台:一般在这里保存应用的数据(游戏数据,比如暂停游戏)
  2.3> 内存警告:清空不必要的内容

转载于:https://www.cnblogs.com/laugh/p/6558479.html

这个我过滤概述UIPickerView键盘处理相关推荐

  1. 推荐系统之协同过滤概述

    推荐系统之协同过滤概述 http://www.vanjor.org/blog/2011/05/rs-collaborative-filtering/ 这篇文章讲得可真够细的 推荐系统之协同过滤概述 2 ...

  2. WINDOWS键盘事件的挂钩监控原理及其应用技术

    WINDOWS键盘事件的挂钩监控原理及其应用技术     WINDOW的消息处理机制为了能在应用程序中监控系统的各种事件消息,提供了挂接 各种反调函数(HOOK)的功能.这种挂钩函数(HOOK)类似扩 ...

  3. java基础知识点(4)——运算符与键盘录入

    运算符与键盘录入 文章目录 运算符与键盘录入 运算符 一.运算符分类 1.算数运算符 2.赋值运算符 3.比较运算符 4.逻辑运算符 5.位移运算符 6.三元运算符 7.自增自减运算符 二.键盘录入 ...

  4. FPGA基础设计(二):PS2键盘控制及短按、长按

    概述   PS2键盘也是一个经典的实验,可能很多人接触如何对通信协议.时序编程就是从这个实验开始学习的.USB键盘已经很普及,现在市场上还是有一些USB转PS2的转接头,还有一些转换芯片.这个实验虽然 ...

  5. WINDOWS键盘事件监控原理及应用 (转)

    WINDOWS键盘事件监控原理及应用 (转)[@more@]windows键盘事件监控原理及应用 赵桂华 ·逸仙时空 WINDOW的消息处理机制为了能在应用程序中监控系统的各种事件消息,提供了挂接各种 ...

  6. 【模块介绍】6×6矩阵键盘(硬件部分和扫描方式)

    目录 概述 原理图 扫描方式 扫描法 单个按键按下 多个按键按下 行反转法 图解 成品 概述 矩阵键盘非常常见 就是利用键盘组成矩阵来减少IO口的使用 做成6×6的矩阵键盘可以使用12个IO口读取36 ...

  7. 机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)

    http://antkillerfarm.github.io/ 向量的范数(续) 范数可用符号∥x∥λ\|x\|_\lambda∥x∥λ​表示.常用的有: ∥x∥1=∣x1∣+⋯+∣xn∣\|x\|_ ...

  8. 机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)...

    http://antkillerfarm.github.io/ 向量的范数(续) 范数可用符号∥x∥λ表示. 经常使用的有: ∥x∥1=|x1|+⋯+|xn| ∥x∥2=x21+⋯+x2n−−−−−− ...

  9. 矛与盾:用VB打造驱动级键盘记录器,能过QQ密码框(源码)

    信息监控与隐私保护永远是一对矛盾,在对付各种信息窃取软件上,新技术总是层出不穷.本文介绍一种古老的键盘记录器技术,确实很古老,DOS时代人们就在用了,但是现在它仍然很有效,在键盘过滤驱动失效的情况下, ...

最新文章

  1. 枚举 ---- B. RPG Protagonist[Educational Codeforces Round 94 (Rated for Div. 2)]数学枚举
  2. python绘制条形图-python matplotlib库绘制条形图练习题
  3. Vim 基本配置和经常使用的命令
  4. Oracle-HWM(High Water Mark) 高水位解读
  5. 终于当了回up主,来白嫖我历时半年总结的Java思维导图吧!!!
  6. 希尔排序(缩小增量排序)(插入排序的优化版) C++代码实现及算法分析 恋上数据结构笔记
  7. C语言 二维数组复制、清零及打印显示
  8. 12 月份 10 个新鲜的 jQuery 插件和教程
  9. 烂泥:通过vsphere给esxi添加本地硬盘
  10. python字典类型写入文件_python 字典写入文件
  11. opencv 图像边缘检测 Canny边缘检测算法使用
  12. 在python中使用csv读写CSV
  13. C/C++[codeup 1944]八进制
  14. 麦子学院视频教程笔记
  15. 手把手Verilog HDL同步Vaild-Ready握手FIFO机制
  16. ESD保护二极管,一种有效的ESD静电保护器件
  17. 【分享】过来人告诫研一学生:研一生活如何过才叫精彩!(转)
  18. Set中的HashSet和TreeSet特点及用法
  19. Python操作MySQL将文件信息制作成表(以裁判文书为例)
  20. 如何配置XenDesktop使用Mirror数据库

热门文章

  1. phpeclipse+xdebug配置
  2. 关于快速创建空表的纠正
  3. Web前端Javascript笔记(8)Ajax前后端交互
  4. python写数据库中间件_python3开发进阶-Django框架的中间件的五种用法和逻辑过程...
  5. python函数-返回菲波那切数列for,range,append
  6. IntelliJ IDEA中创建MyBatis.xml模板
  7. datagrip替换字_Datagrip 快捷键和常用插件持续更新一集一些使用技巧
  8. Pantera Capital CEO:比特币有望在今年夏天达到11.5万美元
  9. SAP License:PM常用表和字段
  10. scrm电商后台管理、公司管理、店铺管理、特卖活动、营销活动、订单管理、优惠券管理、商品管理、会员管理、标签管理、会员卡、签到配置、积分、拼团、砍价、快递配置、短信配置、充值、运营活动