swift 键盘属性与事件
1、键盘的类型
textField1.keyboardType = UIKeyboardType.default //系统默认的虚拟键盘
textField1.keyboardType = UIKeyboardType.asciiCapable //显示英文字母的虚拟键盘
textField1.keyboardType = UIKeyboardType.numbersAndPunctuation //显示数字和标点的虚拟键盘
textField1.keyboardType = UIKeyboardType.URL //显示便于输入数字的虚拟键盘
textField1.keyboardType = UIKeyboardType.numberPad //显示便于输入数字的虚拟键盘
textField1.keyboardType = UIKeyboardType.phonePad //显示便于拨号呼叫的虚拟键盘
textField1.keyboardType = UIKeyboardType.namePhonePad //显示便于聊天拨号的虚拟键盘
textField1.keyboardType = UIKeyboardType.emailAddress //显示便于输入Email的虚拟键盘
textField1.keyboardType = UIKeyboardType.decimalPad //显示用于输入数字和小数点的虚拟键盘
textField1.keyboardType = UIKeyboardType.twitter //显示方便些Twitter的虚拟键盘
textField1.keyboardType = UIKeyboardType.webSearch //显示便于在网页上书写的虚拟键盘
textField1.keyboardType = UIKeyboardType.asciiCapableNumberPad //显示便于输入数字的虚拟键盘 只支持iOS10
textField1.keyboardType = UIKeyboardType.alphabet //字母键盘 已弃用
2、键盘的外观
textField1.keyboardAppearance = .default //默认外观:浅灰色
textField1.keyboardAppearance = .dark //黑色
textField1.keyboardAppearance = .light //亮色,与Default很相似
3、键盘的回车键
textField1.returnKeyType = .default //默认:灰色按钮,标有Return
textField1.returnKeyType = .continue // 标有Continue的蓝色按钮
textField1.returnKeyType = .done //标有Done的蓝色按钮
textField1.returnKeyType = .emergencyCall //紧急呼叫按钮
textField1.returnKeyType = .go //标有Go的蓝色按钮
textField1.returnKeyType = .google //标有Google的蓝色按钮,用于搜索
textField1.returnKeyType = .join //标有Join的蓝色按钮
textField1.returnKeyType = .next //标有Next的蓝色按钮
textField1.returnKeyType = .route //标有Route的蓝色按钮
textField1.returnKeyType = .search //标有Search的蓝色按钮
textField1.returnKeyType = .send //标有Send的蓝色按钮
textField1.returnKeyType = .yahoo //标有Yahoo!的蓝色按钮,用于搜索
4、键盘的回车键
textField1.autocorrectionType = .default //默认
textField1.autocorrectionType = .no //不自动更正
textField1.autocorrectionType = .yes //自动更正
5、键盘的安全性
textField1.isSecureTextEntry = true //输入密码
6、回收键盘
//按return回收键盘
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
} //点击空白回收键盘
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
7、键盘的事件 监听键盘的弹出和消失,避免遮挡输入框
只能说这里坑太多了,是真的太多了,和2.0差别太大,不说了坑太多了,上代码
//Mark:Delegate
func textFieldDidBeginEditing(_ textField: UITextField) {
//监听键盘弹出通知
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
//监听键盘收回通知
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
func textFieldDidEndEditing(_ textField: UITextField) {
self.view.endEditing(true) } //键盘显示
func keyboardWillShow(notification:NSNotification) { let textMaxY = self.textField1!.frame.maxY // 取到输入框的最大的y坐标值 let userinfo: NSDictionary = notification.userInfo! as NSDictionary let nsValue:AnyObject? = userinfo.object(forKey: UIKeyboardFrameEndUserInfoKey) as AnyObject? let keyboardY = nsValue?.cgRectValue.origin.y //取到键盘的y坐标 // 设置动画 let duration = 2.0 UIView.animate(withDuration: duration) { () -> Void in
if (textMaxY > keyboardY!) {
self.view.transform = CGAffineTransform(translationX: 0, y: keyboardY! - textMaxY - 10)
}else{
//view.transform = CGAffineTransformIdentity;线性代数里面讲的矩阵变换,这个是恒等变换当 你改变过一个view.transform属性或者view.layer.transform的时候需要恢复默认状态的话,记得先把他们重置可以使用view.transform = CGAffineTransformIdentity,或者view.layer.transform = CATransform3DIdentity,
self.view.transform = CGAffineTransform.identity
}
}
}
//键盘隐藏
func keyboardWillHide(notification:NSNotification){ UIView.animate(withDuration: 2.0) { () -> Void in
self.view.transform = CGAffineTransform.identity
} }
这里只是简单的写法,在正式的项目中,请各位判断是否需要进行动画操作,当然这并不会影响最终的效果,但是对性能会造成一定的影响
下面贴出他到底有多坑:你搜索出来的获取键盘弹出的高度的结果一定是这样的:
let userinfo: NSDictionary = aNotification.userInfo! let nsValue = userinfo.objectForKey(UIKeyboardFrameEndUserInfoKey) let keyboardRec = nsValue?.CGRectValue() let height = keyboardRec?.size.height 文/其所以然(简书作者)
原文链接:http://www.jianshu.com/p/49edd72e07a5
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
这是2.0的写法,转换成3.0是这样的
let textMaxY = self.textField1!.frame.maxY let userinfo: NSDictionary = notification.userInfo! as NSDictionary let nsValue = userinfo.object(forKey: UIKeyboardFrameEndUserInfoKey) let keyboardRec = (nsValue as AnyObject).cgRectValue let height = keyboardRec?.size.height
然后你会发现 height一直是nil 对啊 一直是nil啊 ,你怎么操作啊,傻逼了吧。原因到底是什么呢? 。。。。。不知道
或者你搜索出来的结果是这样的 :
let keyboardH : CGFloat? = (((notification.userInfo![UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue?.size.height))
其实是第一种结果的简写,这样依旧获取不到键盘的高度。
具体这两种写法的区别在哪里导致获取不到键盘的高度的,知道的小伙伴还请分享一下,在下也是3.0的菜鸟
swift 键盘属性与事件的更多相关文章
- UITextView: 响应键盘的 return 事件(收回键盘)
UITextView: 响应键盘的 return 事件(收回键盘) 此篇文章将要介绍UITextView: 响应键盘的 return 事件(收回键盘)的相关介绍,具体实例请看下文 UITextView ...
- combobox 属性、事件、方法
一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...
- C#中combobox 控件属性、事件、方法
一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...
- HTML 标准属性 和 事件属性
HTML的公共属性 HTML 和 XHTML 标签支持的标准属性 核心属性 (Core Attributes) 以下标签不提供下面的属性:base.head.html.meta.param.scrip ...
- [转]Delphi 控件属性和事件
常用[属性] Action:该属性是与组件关联的行为,允许应用程序集中响应用户命令 Anchors:与组件连接的窗体的位置点 Align:确定组件的对齐方式 AutoSize:确定组件是否自动调整其大 ...
- HTML 5 全局属性和事件属性
1.HTML 5 全局属性 HTML 属性能够赋予元素含义和语境. 下面的全局属性可用于任何 HTML5 元素. NEW:HTML 5 中新的全局属性. 属性 描述 accesskey 规定访问元素的 ...
- Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件
键盘与文本事件 用户在使用键盘时会触发键盘事件 “DOM2级事件”最初规定了键盘事件,但是最后在定稿时又删除了相应内容 所以键盘事件被放入了DOM3级事件的规范中 总的来说有三个键盘事件: keydo ...
- Python全栈开发之路 【第十七篇】:jQuery的位置属性、事件及案例
位置属性 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- javaScript事件(七)事件类型之键盘与文本事件
键盘事件如下: keydown:当用户按下键盘上的任意键时触发,而且如果按住不放的话,会重复触发此事件. keypress:当用户按下键盘上的字符键时触发,而且如果按住不放的话,会重复触发此事件. k ...
随机推荐
- input中加入搜索图标
刚吃了一份宫保鸡丁刀削面,幸福感满满,写篇博客消耗一下热量. 今天工作遇到的一个问题是在input输入框中加入图标,当输入内容后,图标和提示语一起隐藏,类似于placeholder的功能.如淘宝页面, ...
- [课程设计]Scrum团队分工及明确任务1.0 ----多鱼点餐
[课程设计]Scrum团队分工及明确任务1.0 ----多鱼点餐 一.开发背景 多鱼点餐系统是一套比较系统化的针对餐厅点餐服务的产品,从顾客进入餐厅点餐到用餐结束再到最后的结账买单,需要全面的.高效的 ...
- git初学习体会
github:项目版本控制器 git和传统的版本控制器相比,最大的一点是,界面简单,给与非线性开发模式的强有力的支持,完全分布式等. 对于完全分布式的实现,我的理解是这个样子的.这多少要涉及到一点它的 ...
- yii框架中的一些小细节配置问题
1.查看运行时间'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=shop', 'emul ...
- An invalid character [32] was present in the Cookie value
系统安装Tomcat版本为:tomcat8,登录时报错"An invalid character [32] was present in the Cookie value" 处理方 ...
- SPOJ bsubstr
题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...
- Unity代码设置shader属性
主要是用到了Material.SetTexture这个方法,具体可以参考如下: 举个例子,比如我想用代码动态控制Skybox/Cubemap下的Cubemap,可以这样写: public Cubema ...
- Xcode 自动升级到8.21后坑-Abort trap: 6
pod install or pod update show this message:Generating Pods project Abort trap: 6solve method: udo g ...
- Python爬虫 网页图片
一 概述 参考http://www.cnblogs.com/abelsu/p/4540711.html 弄了个Python捉取单一网页的图片,但是Python已经升到3+版本了.参考的已经失效,基本用 ...
- java 复制文件
package com.yunfengtech.solution.business; import java.io.*; public class copy { public static void ...