UIPickerView是开发中常用的控件,日期选择、年龄选择、城市的多级联动等等都会使用,它一般是在点击某个按钮后出现,展现方式和UITextView一样,从页面底部弹出,选中后或者点击控件以外区域自动缩回。

系统原生的picker view是不支持自动弹出收回的,所以我们要对它进行一下改造。

思路:为了模仿键盘的弹出收回效果,我们设置一个UITextView,点击它就能吊起键盘。UITextView有一个inputview,我们只要将其替换成自己需要的picker view即可。

  效果图

主要代码:新建一个View继承与UIView,定义两个视图textView合pickerView。然后创建他们,如下:

- (void)createContentView {
self.textView = [[EXNoPasteTextField alloc] initWithFrame:self.bounds];
self.textView.font = self.textFont;
self.textView.autocorrectionType = UITextAutocorrectionTypeNo;
[self addSubview:self.textView]; _pickerView = [[UIPickerView alloc] init];
self.pickerView.dataSource = self;
self.pickerView.delegate = self;
self.textView.inputView = _pickerView; UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(, , [UIScreen mainScreen].bounds.size.width, )];
toolBar.barStyle = UIBarStyleDefault; UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneTouched:)];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelTouched:)]; // the middle button is to make the Done button align to right
[toolBar setItems:[NSArray arrayWithObjects:cancelButton, [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], doneButton, nil]];
self.textView.inputAccessoryView = toolBar;
}

手机端是完全没问题的,iPad端会展示联想和复制按钮,需要自定义一个继承UITextView的TextView,屏蔽其粘贴功能。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
UIMenuController *menu = [UIMenuController sharedMenuController];
if (menu) {
menu.menuVisible = NO;
} return NO;
}

  

需要源码的,可以去我的GitHub:https://github.com/zhanghua0926/EXPickerTextView

自动弹出pickerview的更多相关文章

  1. 如何让UIViewController自动弹出PickerView

    因为响应者的一下属性inputView和inputAccessoryView都是只读的,所以如果想要指定弹出的view就要override 下面两个属性的get和set方法 UIResponder ( ...

  2. jquery右下角自动弹出关闭层

    效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/36.htm 右下角弹出层后,会在一定时间后自动隐藏.第一版本:http://www.cnblogs.com/ ...

  3. vs安装后当切换到图形设计界面的时候自动弹出“正在准备安装的提升”,然后程序处于假死状态

    Vs2008 安装后当切换到图形设计界面的时候自动弹出 ”正在准备安装的提示“,然后程序处于假死状态 在网上找了很多,最终解决问题:  从vs2008安装光盘中找到 /WCU/WebDesignerC ...

  4. js实现打开网页自动弹出添加QQ好友邀请窗口

    我们有时进一些网面或专题页面会自动弹出一个加为好友的对话框了,在研究了很久之后发现可以直接使用js来实现,下面我们一起来看js实现打开网页自动弹出添加QQ好友邀请窗口的方法. 第一步.JS脚本 这个是 ...

  5. AndroidTips:解决Dialog全屏显示以及Dialog显示自动弹出输入法

    继承实现一个dialog,并在onCreate里面做处理. @Override  protected void onCreate(Bundle savedInstanceState) {      s ...

  6. 打开网页自动弹出QQ对话框的实现办法

    Ian今天偶然进入一个公司的企业网站,然后QQ聊天窗口这里马上就弹出与那个公司客服聊天的窗口.怀着好奇的心态,Ian分析了该公司的网站源码,发现了实现网页弹出qq对话框的原理与实现方法,相信此时此刻你 ...

  7. PL/SQL Developer去掉启动时自动弹出的Logon弹出框方法

    以前用PL/SQL Developer 7.0版本,最近升级到PL/SQL Developer 11.0版本,但每次启动PL/SQL Developer都会自动弹出Logon窗口,并且选中其中的登录历 ...

  8. 关闭Eclipse中自动弹出console的功能

    当我们使用Eclipse编写代码的时候,一般都会使界面最大化,如果这时tomcat服务器处在运行的状态,那么当后台有打印内容,比如日志输出,代码程序报错输出时,console就会自动弹出,很不方便. ...

  9. [转]android自动弹出软键盘(输入键盘)

    转自:http://www.devdiv.com/home.php?mod=space&uid=65729&do=blog&id=11847 很多应用中对于一个界面比如进入搜索 ...

随机推荐

  1. 阿里云入坑指南&&nodejs 安装配置

    买了阿里云1G1核1M的机器(800元,3年) 登录阿里云-实例-选择实例所在地区-重置密码 用公网IP ssh连接 #升级CentOS yum -y update #安装or更新组件 yum -y ...

  2. 正版STLINK使用注意

    原文:https://blog.csdn.net/xinghuanmeiying/article/details/78026561 盗版的TVCC是3.3v,可以只用1,7,9,12 正版的TVCC是 ...

  3. js除法四舍五入

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  4. COMP9334 Project

    COMP9334 Project, Term 1, 2019:Fog/cloud ComputingVersion 1.0Due Date: 11:00pm Friday 26 April 2019. ...

  5. js DateTime函数

    ---恢复内容开始--- 一.js获取当前日期时间var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFull ...

  6. 【QT】Pycharm add QT Desinger

    1. https://www.cnblogs.com/dalanjing/p/6978373.html -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWitho ...

  7. Kinetis Design Studio 下使用J-Link下载程序

    1.安装J-Link驱动. 在KDS安装目录下已自带J-Link驱动,进入以下目录(以我的为例): C:\Freescale\KDS_1.1.1\segger\USBDriver 将看到CDC.x64 ...

  8. windows程序设计 Unicode和多字节之间转换

    Unicode转多字节:WideCharToMultiByte 多字节转Unicode:MultiByteToWideChar 代码演示 #include <windows.h> int ...

  9. 灵雀云CTO陈恺:从“鸿沟理论”看云原生,哪些技术能够跨越鸿沟?

    灵雀云CTO陈恺:从“鸿沟理论”看云原生,哪些技术能够跨越鸿沟? 历史进入2019年,放眼望去,今天的整个技术大环境和生态都发生了很大的变化.在己亥猪年春节刚刚过去的早春时节,我们来梳理和展望一下整个 ...

  10. 迷宫问题 (bfs广度优先搜索记录路径)

    问题描述: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...