iOS 键盘风格详解UIKeyboardType

一、键盘风格   

UIKit框架支持8种风格键盘。

[java] view plaincopy
print?
  1. typedef enum {  
  2.     UIKeyboardTypeDefault,                // 默认键盘:支持所有字符  
  3.     UIKeyboardTypeASCIICapable,           // 支持ASCII的默认键盘  
  4.     UIKeyboardTypeNumbersAndPunctuation,  // 标准电话键盘,支持+*#等符号  
  5.     UIKeyboardTypeURL,                    // URL键盘,有.com按钮;只支持URL字符  
  6.     UIKeyboardTypeNumberPad,              //数字键盘  
  7.     UIKeyboardTypePhonePad,               // 电话键盘  
  8.     UIKeyboardTypeNamePhonePad,           // 电话键盘,也支持输入人名字  
  9.     UIKeyboardTypeEmailAddress,           // 用于输入电子邮件地址的键盘  
  10. } UIKeyboardType;  

UIKeyboardTypeDefault:


UIKeyboardTypeASCIICapable:


UIKeyboardTypeNumbersAndPunctuation:


UIKeyboardTypeURL:


UIKeyboardTypeNumberPad:


UIKeyboardTypePhonePad:


UIKeyboardTypeNamePhonePad:


UIKeyboardTypeEmailAddress:


UIKeyboardTypeDecimalPad:


UIKeyboardTypeTwitter:


UIKeyboardTypeWebSearch:


UIKeyboardTypeAlphabet:


用法用例:

textView.keyboardtype = UIKeyboardTypeNumberPad;

二、键盘外观

[java] view plaincopy
print?
  1. typedef enum {  
  2.     UIKeyboardAppearanceDefault,    // 默认外观:浅灰色  
  3.     UIKeyboardAppearanceAlert,      //深灰/石墨色  
  4. } UIKeyboardAppearance;  

用法用例:

textView.keyboardAppearance=UIKeyboardAppearanceDefault;

三、回车键

  1. typedef enum {  
  2.     UIReturnKeyDefault,  //默认:灰色按钮,标有Return
  3.     UIReturnKeyGo,  //标有Go的蓝色按钮
  4.     UIReturnKeyGoogle,  //标有Google的蓝色按钮,用于搜索
  5.     UIReturnKeyJoin,  //标有Join的蓝色按钮
  6.     UIReturnKeyNext,  //标有Next的蓝色按钮
  7.     UIReturnKeyRoute,  //标有Route的蓝色按钮
  8.     UIReturnKeySearch,  //标有Search的蓝色按钮
  9.     UIReturnKeySend,  //标有Send的蓝色按钮
  10.     UIReturnKeyYahoo,  //标有Yahoo!的蓝色按钮,用于搜索
  11.     UIReturnKeyDone,  //标有Done的蓝色按钮
  12.     UIReturnKeyEmergencyCall,  //紧急呼叫按钮
  13. } UIReturnKeyType;  

用法用例:

textView.returnKeyType=UIReturnKeyGo;

四、自动大写

[java] view plaincopy
print?
  1. typedef enum {  
  2.     UITextAutocapitalizationTypeNone, //不自动大写  
  3.     UITextAutocapitalizationTypeWords, //单词首字母大写  
  4.     UITextAutocapitalizationTypeSentences, //句子首字母大写  
  5.     UITextAutocapitalizationTypeAllCharacters, //所有字母大写  
  6. } UITextAutocapitalizationType;  
用法用例:

textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

五、自动更正

[java] view plaincopy
print?
  1. typedef enum {  
  2.     UITextAutocorrectionTypeDefault,//默认  
  3.     UITextAutocorrectionTypeNo,//不自动更正  
  4.     UITextAutocorrectionTypeYes,//自动更正  
  5. } UITextAutocorrectionType;  
用法用例:

textField.autocorrectionType = UITextAutocorrectionTypeYes;

六、安全文本输入

textView.secureTextEntry=YES;

开启安全输入主要是用于密码或一些私人数据的输入,此时会禁用自动更正和自此缓存。

七、键盘遮住视图

默认情况下打开键盘会遮住下面的view,带来一点点困扰,不过这不是什么大问题,我们使用点小小的手段就可以解决。

首先我们要知道键盘的高度是固定不变的,不过在iOS 5.0 以后键盘的高度貌似不是216了,不过不要紧,我们调整调整就是了:

 iPhoneipad
竖屏(portrait)216264
横屏(landScape)140352

我们采取的方法就是在textField(有可能是其他控件)接收到弹出键盘事件时把self.view整体上移216px了(我们就以iPhone竖屏为例了)。

首先我们要设置textField的代理,我们就设为当前控制器了。

textField,delegate=self;

然后我们在当前控制器实现下面三个委托方法:

  1. - (void)textFieldDidBeginEditing:(UITextField *)textField  
  2. //当点触textField内部,开始编辑都会调用这个方法。textField将成为first responder   
  3.        NSTimeInterval animationDuration = 0.30f;      
  4.       CGRect frame = self.view.frame;  
  5.       frame.origin.y -=216;  
  6.       frame.size.height +=216;  
  7.       self.view.frame = frame;  
  8.        [UIView beginAnimations:@"ResizeView" context:nil];  
  9.        [UIView setAnimationDuration:animationDuration];  
  10.        self.view.frame = frame;                  
  11.        [UIView commitAnimations];                  
  12. }  
  1. - (BOOL)textFieldShouldReturn:(UITextField *)textField   
  2. {//当用户按下ruturn,把焦点从textField移开那么键盘就会消失了  
  3.         NSTimeInterval animationDuration = 0.30f;  
  4.         CGRect frame = self.view.frame;      
  5.         frame.origin.y +=216;        
  6.         frame.size. height -=216;     
  7.         self.view.frame = frame;  
  8.     //self.view移回原位置    
  9.     [UIView beginAnimations:@"ResizeView" context:nil];  
  10.     [UIView setAnimationDuration:animationDuration];  
  11.         self.view.frame = frame;                  
  12.         [UIView commitAnimations];  
  13.         [textField resignFirstResponder];     
  14. }         
参考博客: http://blog.csdn.net/iukey

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL Hardware--FIO压测

FIO参数 filename/export/1.txt 支持文件系统或者裸设备,-filename/dev/sda2或-filename/dev/sdb direct1 测试过程绕过机器自带的buffer,使测试结果更真实 rwrandwread 测试随机读的I/O rwrandwrite 测试随机…

Node — 第四天(Promise与路由)

Promise - ES6新对象 Promise能够处理异步程序。 回调地狱 JS中或node中,都大量的使用了回调函数进行异步操作,而异步操作什么时候返回结果是不可控的,如果我们希望几个异步请求按照顺序来执行,那么就需要将这些异步操作嵌套起来…

xcode8 升级后注释快捷键不能使用的解决方法

一种说法: 这个是因为苹果解决xcode ghost。把插件屏蔽了。解决方法 命令运行: sudo /usr/libexec/xpccachectl 然后必须重启电脑后生效 还有一种说法:不用指令直接重启就可以了。

winform datagridview控件使用

最近做项目时&#xff0c;显示查询结果总需要绑定到datagridview控件上显示&#xff0c;总结了给datagridview绑定数据的方式&#xff0c;以及导出datagridview数据到excel表格&#xff0c;如有错误请多指教 1.直接绑定数据源&#xff0c;可以绑定的数据格式有List<T>,Da…

Node — 第五天

1. MySQL数据库 phpstudy 数据库服务器及图形化软件 软件链接 链接&#xff1a;https://pan.baidu.com/s/1F8wdoMstHAJkINfDKDejsw 提取码&#xff1a;xl3k 数据库对于我们前端同学来说&#xff0c;就是一个了解。 对于不会变化的数据&#xff08;省、市、县&#xff09;&…

iOS10 权限访问崩溃

手机升级了 iOS10 Beta&#xff0c;然后用正在开发的项目 装了个ipa包&#xff0c;发现点击有关 权限访问 直接Crash了&#xff0c;并在控制台输出了一些信息&#xff1a; This app has crashed because it attempted to access privacy-sensitive data without a usage descr…

Node — 第六天(前后端分离)及(身份验证)

综合应用服务端知识点搭建项目 下载安装所需的第三方模块 npm init -y npm i express cors mysql # express 用于搭建服务器 # cors 用于解决跨域 # mysql 用于操作数据库# 后面用到什么&#xff0c;再下载创建app.js 之前&#xff0c;我们开启一个服务器&#xff0c;js文件…

继承上机作业

1、实现如下类之间的继承关系&#xff0c;并编写Music类来测试这些类 2、编写一个Java应用程序&#xff0c;该程序包括3个类&#xff1a;Monkey类、People类和主类E。要求&#xff1a; (1) Monkey类中有个构造方法&#xff1a;Monkey (String s)&#xff0c;并且有个public voi…

ApplePay集成教程

Apple Pay运行环境&#xff1a;iPhone6以上设备&#xff0c;操作系统最低iOS9.0以上&#xff0c;部分信息设置需要iOS9.2以上。目前还不支持企业证书添加。 环境搭建好后可以在模拟器上面运行&#xff0c;xcode7.2.1iPhone6SP9.2系统下&#xff0c;系统会绑定几种虚拟的银行卡…

Node — 第七天 (大事件项目接口实现一)

关于JS错误处理 node中和mysql中的错误处理 node和MySQL提供的方法&#xff0c;已经对错误信息进行了封装&#xff0c;只需要使用 err.message 即可获取到错误信息。 比如&#xff1a; const fs require(fs); // 读取一个不存在的文件 fs.readFile(abcd.txt, (err, data) …

1.Consul 简介和环境搭建

1.什么是 Consul Consul 是 service mesh(服务网格)的一个解决方案&#xff0c;它提供了诸如服务发现&#xff0c;配置和隔离等功能的一整套控制平面(control plane)。开发人员可以根据需要单独使用这些功能点&#xff0c;也可以将他们整合成为一个完整的service mesh。Consul …

Node — 第八天 (大事件项目接口实现二)

如何处理MySQL的错误 MySQL的错误信息&#xff0c;可以通过err来获取。这是没有问题的。 但是&#xff0c;我们加入了Promise&#xff0c;Promise中的错误&#xff0c;在外部是获取不到的&#xff0c;只能使用Promise相关方法来获取错误信息。 解决方法一 使用 JS原生的 tr…

在local模式下的spark程序打包到集群上运行

一、前期准备 前期的环境准备&#xff0c;在Linux系统下要有Hadoop系统&#xff0c;spark伪分布式或者分布式&#xff0c;具体的教程可以查阅我的这两篇博客&#xff1a; Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分布式环境搭建 然后在spark伪分布式的环境下必须出现如下八…

Effective Objective-C 2.0 初读小结

1.对于OC中的对象声明例如NSObject *obj1 [NSObject new];, obj1这个指针变量是分配在栈上的, 他指向的是这一个分配在堆上面的实例对象, 如果进行下面的赋值操作NSObject *obj2 obj1;,那么并没有新生成一个实例对象, 只是在栈上分配了一个新的指针变量obj2, 而obj2和obj1指向…

APS系统对制造企业到底有多重要?看完这5点你就明白了

第一个问题&#xff1a;需要APS吗&#xff1f; APS是否重要&#xff0c;不能从其所体现的软件工具或系统角度来说&#xff0c;而应该从业务角度来说。对于制造工厂和车间的运行而言&#xff0c;计划是核心的业务。就如同那句俗话说的&#xff0c;没有规矩不成方圆&#xff0c;领…

Node — 第九天 (大事件项目接口实现三)

文章管理接口 设计数据表 添加文章接口 编写接口&#xff0c;使用postman模拟提交formdata类型的数据 在article.js 中&#xff0c;加入 /add 路由 postman模拟提交formdata类型的数据 multer处理文件上传 下载安装multer 加载模块 const multer require(multer) 配置上…

Python之爬虫-段子网

Python之爬虫-段子网 https://ishuo.cn #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requestsresponse requests.get(https://ishuo.cn) data response.text print(data) r re.findall(<div class"content">(.*?)</div>,data) f…

Node — 第九天 (ES6降级 and 发布属于自己的[第三方模块]包)

ES6降级处理 因为 ES 6 有浏览器兼容性问题&#xff0c;可以使用一些工具进行降级处理&#xff0c;例如&#xff1a;babel 降级处理 babel 的使用步骤 安装 Node.js命令行中安装 babel配置文件 .babelrc运行命令&#xff0c;完成降级 项目初始化 (项目文件夹不能有中文) npm …

Vue — 第一天(极速入门)

基本介绍 vue是什么 目标&#xff1a;了解vue的一些基础概念。 官方网站&#xff1a; https://cn.vuejs.org/ vue是&#xff1a;渐进式javascript框架。 两组概念 &#xff08;1&#xff09;框架 库。只提供一些API给开发者使用。jquery 是一个js库框架。拥有自己的规则和…

python类和实例化

简答介绍类和实例python是面向对象的语言&#xff0c;最主要的就是类和实例&#xff0c;类是抽象的模版创建一个类class Studen(object),class 后接类名&#xff0c;定义的类名大些字母开头&#xff0c;object为类的继承&#xff0c;没有合适的继承类用object类&#xff0c;这是…