iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘
原文地址:http://blog.csdn.net/xiaotanyu13/article/details/7711954
iOS上面对键盘的处理很不人性化,所以这些功能都需要自己来实现,
首先是点击return和屏幕隐藏键盘
这个首先引用双子座的博客
在 iOS 程序中当想要在文本框中输入数据,轻触文本框会打开键盘。对于 iPad 程序,其键盘有一个按钮可以用来关闭键盘,但是 iPhone 程序中的键盘却没有这样的按钮,不过我们可以采取一些方法关闭它。例如,我们可以实现按下 Rerun (有时也是 Done、Research 等)键关闭键盘,或者,更人性化的,轻触背景关闭键盘。
1、首先讲一下按下Return键关闭键盘。
当按下键盘的 Return 键,会产生一个 Did End On Exit 事件,此时,我们告诉文本框要放弃控件,于是键盘就消失了。
假设,我们已经创建了一个 Single View Application ,并打开 ViewController.xib 文件,在 View 上拖上去了三个 Text Field ,然后,我们把这三个文本框映射到 ViewController.h 中,名称依次是 firstField、secondField 以及 thirdField 。如下图:
在这个基础上,实现轻触 Return 关闭键盘,步骤为:
(1)在 ViewController.h 中声明一个方法:
- (IBAction)textFiledReturnEditing:(id)sender;
(2)在 ViewController.m 中实现这个方法:
-(IBAction)textFiledReturnEditing:(id)sender {[sender resignFirstResponder]; }
所谓 First Responder 指的就是用户当前正在与之交互的控件。当用户使用键盘时,First Responder 就是这个键盘,resignFirstResponder 方法,顾名思义,就是放弃 First Responder 。
(3)让这三个文本框都映射到 textFiledReturnEditing 方法,不过此时的事件应当是 Did End On Exit ,具体操作是:
打开 Assistant Editor
给其他两个文本框进行同样的操作。现在,已经实现了轻触 Return 键关闭键盘。
2、下面介绍更人性化的方法,轻触背景关闭键盘。
跟上面的步骤差不多,首先定义一个方法,然后实现这个方法,接下来将指定的控件映射到这个方法,并选择好所触发的事件。不同的是,这次我们要选择的控件不是上边的文本框,而是视图 View 本身。
(1)在 ViewController.h 文件中添加方法声明代码:
- (IBAction)backgroundTap:(id)sender;
(2)在ViewController.m中实现这个方法:
- (IBAction)backgroundTap:(id)sender {[firstField resignFirstResponder];[secondField resignFirstResponder];[thirdField resignFirstResponder]; }
需要说明的是,[firstField resignFirstResponder];表示,如果firstField有FirstResponder的话就放弃它,我们不用先判断firstField是否有,这条语句完全正确。
(3)让 View 映射到这个方法,不过事先,我们先要改变 View 的类型。
打开xib,选中 View ,打开 Identity Inspector ,在 class 中选择 UIControl :
(4)打开Assistant Editor ,左边打开 ViewController.xib ,右边打开 ViewController.h ,在Xcode最右边打开 Connector Inspector ,在 ViewController.xib 中选择 Control ,在 Connector Inspector 中找到 Touch Down ,从它右边的圆圈中拉出映射线,映射到 ViewController.h 的 backgroundTap 方法,如下图:
好了,可以运行下看看效果了:
打开键盘之后,在背景区域点击一下,键盘就会向下收起来。
然后点评,在网上也有只写一个 backgroundTap 函数,然后将所有组件都 resignFirstResponser的方法,即 将组件的事件和屏幕的事件指向同一个函数。
这两个方法都是可以用的,但是呢,我更加倾向于使用同一个函数的方法,原因呢,原因就要牵扯到第二个方面的知识:
解决虚拟键盘挡住UITextField的方法因为屏幕太小的缘故,一个键盘跳出来总是把输入框挡住,所以需要移动屏幕来匹配键盘
#pragma mark -
#pragma mark
- (void)keyboardWillShow:(NSNotification
{
}
-(BOOL)textFieldShouldReturn:(UITextField
{
}
- (void)textFieldDidBeginEditing
{
}
#pragma mark -

- (IBAction)backgroundTap:(id)sender {
相关文章:

深度学习可解释性问题如何解决?图灵奖得主Bengio有一个解
作者 | Yoshua Bengio, Tristan Deleu等译者 | 刘畅,编辑 | Just出品 | AI科技大本营(ID:rgznai100)自 2012 年以来,深度学习的发展有目共睹,今年 3 月,为此做出巨大贡献的 Yoshua Bengio、Yann Lecun和Geo…

zepto打造一款移动端划屏插件
效果图 样式1 样式2 调用 正常情况下应该是后台生成的html代码,但还是写了一套操作tab页的方法 调用简便如下: <link rel"stylesheet" href"kslider.css" type"text/css"/> <script type"text/javascript&q…
swift使用xib绘制UIView
目标:用xib绘制一个UIView,在某个ViewController中调用。 三个文件:ViewController.swift DemoView.swift DemoView.xib 首先,可以专心将DemoView.xib画出来,别忘记DemoView.xib中UIView的一处设置 然后&#x…
吴恩达老师深度学习视频课笔记:深度卷积网络
Why look at case studies?:过去几年,计算机视觉研究中的大量研究都集中在如何把卷积层、池化层以及全连接层这些基本构件组合起来形成有效的卷积神经网络。找感觉最好的方法之一就是去看一些案例,就像很多人通过看别人的代码来学习编程一样…
测试工程师的好日子来啦?Testin发布AI测试产品,提升易用性和自动化效率
2019年10月26日,以"AI未来"为主题的第二届NCTS中国云测试行业峰会在北京国际会议中心正式开幕。在本次大会上,Testin 总裁徐琨正式发布测试业务Testin云测的全新AI产品iTestin。作为 Testin 人工智能战略中的重要一环,iTestin 融合…

Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug
新的逻辑引入了新的bug,会导致在跨多库连接时,产生表名前缀映射混乱,需要再做逻辑上的修复。 function table_name($tablename) {if(!empty($this->map) && !empty($this->map[$tablename])) {$id $this->map[$tablename];…

swift语言的Block
[cpp] view plaincopy// // blockDemo.swift // swiftDemo // // Created by apple on 14-6-29. // Copyright (c) 2014年 fengsh. All rights reserved. // import Foundation //无参无返回值 typealias funcBlock () -> () //或者 () -> …
吴恩达老师深度学习视频课笔记:目标检测
目标定位:如下图,图像分类任务就是算法遍历图像,判断其中的对象是不是car。图像定位分类(classification with localization)不仅要用算法判断图像中的是不是car,还要在图像中标记出car的位置。图像分类的思路可以帮助学习分类定位࿰…

国际顶级学界业界大咖云集,9 场技术论坛布道,2019 嵌入式智能国际大会强势来袭!...
2019 嵌入式智能国际大会即将来袭!购票官网:https://dwz.cn/z1jHouwE2019年12月6日-8日,2019嵌入式智能国际大会将在深圳华侨城洲际大酒店举行。本次大会由哈尔滨工业大学(深圳)、清华大学国际研究生院、CSDN、嵌入式视…

Linux简介总结
1. Linux 就是Unix, 但是Unix 并不一定是Linux.2. 三种软件模式:商业软件,共享软件,自由软件。3. 为什么使用Linux? 它是一个自由软件。第一:可免费提供给任何用户使用。第二:它的源代码公开和可自…

Swift中编写单例的正确方式
本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性。 在之前的帖子里聊过状态管理有多痛苦,有时这是不可避免的。一个状态管理的例子大家都很熟悉,那就是单例。使…
C语言中的弱符号与强符号介绍
弱符号(Weak symbol)是链接器(ld)在生成ELF(Executable and Linkable Format,缩写为ELF,可执行和可链接格式,是一种用于可执行文件、目标文件、共享库和核心转储的标准文件格式。ELF文件有两种索引:程序标头中记载了运行时所需的段࿰…

Simple Transformer:用BERT、RoBERTa、XLNet、XLM和DistilBERT进行多类文本分类
作者 | Thilina Rajapakse译者 | Raku编辑 | 夕颜出品 | AI科技大本营(ID: rgznai100)【导读】本文将介绍一个简单易操作的Transformers库——Simple Transformers库。它是AI创业公司Hugging Face在Transformers库的基础上构建的。Hugging Face Transfor…
StarUML中时序图添加小人
转载于 http://blog.csdn.net/longyuhome/article/details/9011629 在看时序图的例子的时候,发现有些的时序图上有小人的图标,可是一些UML工具却没有找到小人的图标,这让我很闹心,一直没解决,今天终于将该问题给解…

Swift学习: 从Objective-C到Swift
作者:方秋枋(GitHub) 这篇文章是自己学习Swift的笔记与深化。希望这篇文章能够帮助已经有Objective-C经验的开发者更快地学习Swift。同时也品味到Swift的精妙之处。 结论放在开头:我认为Swift比Objective-C更优雅,更安全同时也更现代,更性感…

C/C++中static关键字用法汇总
1. 函数内static局部变量:变量在程序初始化时被分配,直到程序退出前才被释放,也就是static是按照程序的生命周期来分配释放变量的,而不是变量自己的生命周期。多次调用,仅需一次初始化。2. cpp内的static全局变量&…

CornerNet: 成对关键点物体检测 | CSDN博文精选
作者 | 贾小树来源 | CSDN博客文章目录1、论文总述2、使用锚定框的两个缺点3、角点检测比边界框中心或 proposals效果好的两个原因4、corner pooling5、用于Grouping Corners的 embedding vector的工作原理6、正负样本的分配方式(改进的focal loss)7、角…

PHP创建日志记录(已封装)
1 <?php2 3 class Logs{4 private $_filepath; //文件路径5 private $_filename; //文件名6 private $_filehandle; //文件引擎7 8 9 public function Logs($dir null,$filename null){ 10 11 $this->_filepath empty($dir) ? : $d…

如何用Swift实现一个好玩的弹性动画
本文由CocoaChina译者浅夏旧时光翻译自Raywenderlich 原文:How To Create an Elastic Animation with Swift 每个像样的iOS应用程序一定会有自定义元素、自定义UI以及自定义动画等等很多自定义的东西。 假如你想让你的应用脱颖而出,你必须花费一些时间为…

深入探讨Python的import机制:实现远程导入模块 | CSDN博文精选
来源 | Python编程时光(ID:Python-Time)所谓的模块导入,是指在一个模块中使用另一个模块的代码的操作,它有利于代码的复用。也许你看到这个标题,会说我怎么会发这么基础的文章?与此相反。恰恰我觉得这篇文章…
吴恩达老师深度学习视频课笔记:人脸识别
什么是人脸识别:人脸验证和人脸识别的区别,如下图:One-shot learning:人脸识别所面临的挑战就是需要解决一次学习(one-shot learning)问题。这意味着在绝大多数人脸识别应用中你需要通过单单一张图像或者单单一个人脸图像就能去识…

用小白鼠喝毒药
题设:有N瓶水,其中有一瓶水有剧毒,如果小白鼠喝了会在24小时的时候死亡。 问:用多少只小白鼠能够检测出哪瓶水有剧毒? 要求:用的小白鼠数量少并且用时要短,并给出合理的过程与结论。 我的解题思…

怎样在swift中创建CocoaPods
本文由yake_099(博客)翻译自raywenderlich,作者:Joshua Greene 原文:How to Create CocoaPods with Swift 你可能对一些比较著名的开源的CocoaPods框架比较熟悉,比如Alamofire、MBProgressHUD。但是有时你…
吴恩达老师深度学习视频课笔记:神经风格迁移(neural style transfer)
什么是神经风格迁移(neural style transfer):如下图,Content为原始拍摄的图像,Style为一种风格图像。如果用Style来重新创造Content照片,神经风格迁移可以帮你生成Generated图像。深度卷积网络在学什么:如下图…

“Jupyter的杀手”:Netflix发布新开发工具Polynote
作者 | Michael Li 译者 | Rosie 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100)【导读】10 月 29 日,Netflix 公开了他们内部开发的 Polynote。现如今,大型高科技公司公开其内部的工具或服务,然后受到业界…

System Center 2012 r2优点
System Center 2012System Center2012 是一个全面的管理平台,可帮助你轻松、高效地管理数据中心、客户端设备和混合云 IT 环境。为您提供了针对私有云、托管云和公有云基础结构和应用程序服务的通用管理工具集。可按照您的需求,为生产基础架构、可预期应…

Swift 闭包表达式
闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C 中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。 闭包的形式主要有三种: 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封…

GNU AWK中BEGIN/END使用举例
以下是使用gnu awk将test.cpp文件拆分成两个文件a.cpp和b.cpp,其中b.cpp仅存放test.cpp中的数据,其它内容存放在a.cpp文件中。test.cpp内容如下: #include <stdio.h> #include <iostream> #include <string>int main() {//…

目标检测的渐进域自适应,优于最新SOTA方法
作者 | Han-Kai Hsu、Chun-Han Yao、Yi-Hsuan Tsai、Wei-Chih Hung、Hung-Yu Tseng、Maneesh Singh、Ming-Hsuan Yang译者 | 刘畅编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】目标检测的最新深度学习方法依赖于大量的边界框标注信息…

讨论下IDS的绕过
自从知道dedecms自带了80sec的内置Mysqlids后,一直以来也没有想到绕过的办法。或者是自己mysql的根底太差了吧。于是分析dedecms源码时,只找模板执行,本地包含,上传等,完全没有想到注入存在的可能性了。 可以看看某牛的…