DatePicker通过设置Locale属性可以设置语言(注意手机语言也会影响到它的显示)。

如果通过代码创建DatePicker,又要设置属性,使用下面的代码,注意locale是个枚举,初始化要填写国家语言的标准写法:

例如中国,使用zh_CN。

例如下面的场景,自定义生日输入键盘,只需要定义textField的inputView属性即可设定不同的键盘。

    UIDatePicker *picker = [[UIDatePicker alloc] init];
picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
picker.datePickerMode = UIDatePickerModeDate;
self.inputFiled.inputView = picker;

自定义的键盘往往需要一个工具条来导航,可以通过textField的inputAccessoryView属性来设定键盘的辅助工具。

一般使用TooBar作为键盘的辅助工具。

TooBar中只允许从左向右排列元素,不允许自定义,因此,为了能在左右两侧布置按钮,需要使用弹簧,弹簧也是一种Bar Button Item。

例如两个button的bar,左右各一个控件,则在中间新建一个控件作为弹簧即可。

设置Identifier属性即可:

实现效果为:注意弹簧也是一个Bar Button Item。

注意TooBar里面只能放置Item,而且从左到右,存放在items成员数组中。

用代码实现TooBar就是往items数组中加入BarButtonItem,要实现一个有上一项、下一项、完成(右对齐)的键盘辅助框,用如下代码:

注意设置TooBar的颜色用barTintColor,要给其设置尺寸,高度写44否则可能控件不居中。注意初始化系统Item和自定义Item的不同。

退出键盘的通用代码为[self.view endEditing:YES];

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIDatePicker *picker = [[UIDatePicker alloc] init];
picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
picker.datePickerMode = UIDatePickerModeDate;
self.inputFiled.inputView = picker; UIToolbar *tool = [[UIToolbar alloc] init];
tool.barTintColor = [UIColor grayColor];
tool.frame = CGRectMake(0, 0, 320, 44); UIBarButtonItem *beforeItem = [[UIBarButtonItem alloc] initWithTitle:@"上一个" style:UIBarButtonItemStylePlain target:self action:@selector(ItemClick:)];
UIBarButtonItem *nextItem = [[UIBarButtonItem alloc] initWithTitle:@"下一个" style:UIBarButtonItemStylePlain target:self action:@selector(ItemClick:)];
UIBarButtonItem *springItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStylePlain target:self action:@selector(ItemClick:)];
tool.items = @[beforeItem,nextItem,springItem,doneItem];
self.inputFiled.inputAccessoryView = tool;
} - (void)ItemClick:(UIBarButtonItem *)btn{
NSLog(@"before");
if ([btn.title isEqualToString: @"上一个"]) {
NSLog(@"before");
}else if([btn.title isEqualToString:@"下一个"]){
NSLog(@"next");
}else{
[self.view endEditing:YES];
}
}

成为第一响应者:becomeFirstResponder。

(三十二)DatePicker和自定义键盘的更多相关文章

  1. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

  2. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  3. (转载)Android项目实战(三十二):圆角对话框Dialog

    Android项目实战(三十二):圆角对话框Dialog   前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话 ...

  4. FreeSql (三十二)Aop

    FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...

  5. FreeSql (三十五)CodeFirst 自定义特性

    比如项目内已经使用了其它 orm,如 efcore,这样意味着实体中可能存在 [Key],但它与 FreeSql [Column(IsPrimary = true] 不同. Q: FreeSql 实体 ...

  6. 使用Typescript重构axios(三十二)——写在最后面(总结)

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  7. COJ968 WZJ的数据结构(负三十二)

    WZJ的数据结构(负三十二) 难度级别:D: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,边上均有权值,每个点上有 ...

  8. NeHe OpenGL教程 第三十二课:拾取游戏

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  10. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

随机推荐

  1. 【移动开发】targetSdkVersion的作用

    在AndroidMenifest.xml中,常常会有下面的语句: <uses-sdk android:minSdkVersion="4" android:targetSdkV ...

  2. 使用Boost program_options控制程序输入

    简介 很多人使用界面来输入数据,本文的程序介绍如何使用Boost的program_options控制输入. 程序中使用了: 1. 短选项 2. 可以指定多个参数的选项 程序 #include < ...

  3. [多线程] 生产者消费者模型的BOOST实现

    说明 如果 使用过程中有BUG 一定要告诉我:在下面留言或者给我邮件(sawpara at 126 dot com) 使用boost::thread库来实现生产者消费者模型中的缓冲区! 仓库内最多可以 ...

  4. Zookeeper动态更新服务器列表

    -------------------------------------------------------------------------------------- [版权申明:本文系作者原创 ...

  5. [CSDN_Markdown] 使用CSDN Markdown编辑器

    简介 最近CSDN支持Markdown语法写博客了,甚是欢喜.前几天写了一篇实验了下,感觉不错.准备写几篇文章介绍一下如何使用CSDN的Markdown编辑器写博客,不求全面,但求够用,望大家批评指正 ...

  6. Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名

    Android源码浅析(五)--关于定制系统,如何给你的Android应用系统签名 今天来点简单的我相信很多定制系统的同学都会有一些特定功能的需求,比如 修改系统时间 静默安装 执行某shell命令 ...

  7. XMPP系列(六)---创建群组

    最近公司项目需要,要做一个自己的IMSDK,顺便先把之前没有记录的群聊功能记录一下. 先上资料,查看XMPP群聊相关的资料,可以去这里看协议:XEP-0045 . 创建群组 XMPP 框架里有一个类X ...

  8. Android View框架总结(八)ViewGroup事件分发机制

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52298780 上篇分析了View的事件分发流程,留了一个问题:如果上 ...

  9. java中遍历map的几种方法介绍

          喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是: map.put(key, value); 而提取相应键的值用的方法是: map.ge ...

  10. Android的四个基本概念(线程通信和GLSurfaceView)

    GLSurfaceView提供了下列特性: 1> 管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上. 2> 管理一个EGL disp ...