收起虚拟键盘的各种方法 -- IOS
使用虚拟键盘来输入资讯,是 iOS 的重要互动方式之一,虚拟键盘通常会自动出现在可以编辑的 UITextField 或是 UITextView 的编辑事件中,叫出键盘固然容易,但是要把它收起来,可就没有这么简单,之前在 UITextField 输入结束后的收起小键盘的方式一文中,介绍了如何在编辑完成之后收起虚拟键盘,但是如果您的元件并没有对应的事件可以让你收起虚拟键盘,那又该如何做?下列我们以类似的元件 UITextView 为例,介绍一些通用的方法。
1. 点击编辑区以外的地方(UIView)
这是一种很直觉的方法,当不再需要使用虚拟键盘时,只要点击虚拟键盘和编辑区域外的地方,就可以将键盘收起,下面程式码是在 UIView 中内建的触碰事件方法函式,您可以参考 Touch Panel / 触碰萤幕 / 压力感应器的基本使用方式一文,找到更多关于触碰事件的方法函式。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {if (![myTextView isExclusiveTouch]) {[myTextView resignFirstResponder];}}
如果要使用此方式请务必记得,你操作画面的 Custom Class 一定要是 UIView 才行。
画面的 Custom Class 为 UIView
2. 点击编辑区域以外的地方(UIControl)
收起虚拟键盘的方式与前一种相同,但是如果你的触碰事件里已经且写满了程式码,那么就可以考虑使用,UIControl 的 Touch Up Inside 事件来收起键盘,方法是将以下程式码与 UIControl 的 Touch Up Inside 事件连结即可。
- (IBAction)dismissKeyboard:(id)sender {[myTextView resignFirstResponder];}
如果要使用此方式请务必记得,你操作画面的 Custom Class 一定要是 UIControl 才行。
画面的 Custom Class 为 UIControl
将收起键盘的方法与 UIControl 事件连结
3. 使用制作收起键盘的按钮
当没有编辑区域以外的地方可供点击来收起键盘,自己制作一个按钮来收起目前的虚拟键盘,也是一个不错的方法,由于按钮必须在虚拟键盘出现才能显示于画面上,因此必须借用 NSNotificationCenter 来帮助我们判断目前键盘的状态,您可以在类似 Observer Pattern 的 NSNotificationCenter 一文中,找到更多关于 NSNotificationCenter 的资讯。
首先在 viewDidLoad: 事件中,向 NSNotificationCenter 进行註册,告诉 NSNotificationCenter 我们的 doneButtonshow: 方法函式,想要订阅有关 UIKeyboardDidShowNotification 的讯息事件。
- (void)viewDidLoad {[super viewDidLoad];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (doneButtonshow:) name: UIKeyboardDidShowNotification object:nil];}
现在每当虚拟键盘出现时,就会自动呼叫我们自定义的 doneButtonshow: 方法函式,接下来只要在该方法函式里定义按钮出现的方法即可。
-(void) doneButtonshow: (NSNotification *)notification {doneButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];doneButton.frame = CGRectMake(0, 228, 70, 35);[doneButton setTitle:@"完成编辑" forState: UIControlStateNormal];[doneButton addTarget: self action:@selector(hideKeyboard) forControlEvents: UIControlEventTouchUpInside];[self.view addSubview:doneButton];}
最后是实作按钮按下去时的 hideKeyboard: 方法函式,务必记得要在函式中移除该按钮。
-(void) hideKeyboard {[doneButton removeFromSuperview];[myTextView resignFirstResponder];}
4. 使用判断输入字元
如果要使用输入特定字元(例如 return 换行字元)来收起键盘,必须先在类别内的 @interface 区段採用 协定,您可以参考 Protocol 协定的使用方式一文,获得更多关于协定的资讯。
在採用 协定之后,接着实作出协定内的 textView:shouldChangeTextInRange:replacementText:方法函式,此方法函式会在字元输入时触发,而回传的 BOOL 值则代表该字元是否要作用,下列程式码就是在此方法函式中,使用判断输入字元的方式来收起虚拟键盘(判断字元为 return 换行字元)。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {if ([text isEqualToString:@"\n"]) {[myTextView resignFirstResponder];return NO;}return YES;}
最后别忘记在 viewDidLoad: 事件中,将 UITextView 的代理物件指向自己,这样程式才能正确找到实作 协定方法函式的类别。
- (void)viewDidLoad{[super viewDidLoad];myTextView.delegate = self;}
5. 关于键盘遮蔽的问题
如果您在实作上有遭遇到键盘遮蔽编辑区域的问题,可以参考使用 Animation 解决小键盘挡住 UITextField 的问题一文,透过 Core Graphic 的 Animation 功能,在键盘出现时同时移动编辑区域来解决遮蔽的问题。
来源:http://furnacedigital.blogspot.com/2012/01/blog-post_20.html
收起虚拟键盘的各种方法 -- IOS相关推荐
- linux系统取消虚拟键盘,关闭iOS虚拟键盘的六种方法
第四种方法,通过轻击键盘之外的空白区域关闭虚拟键盘. 将屏幕上的view也就是textField的父视图拖一个touch down事件出来,和一个能关闭虚拟键盘的方法连接.如果视图没有touch do ...
- Android收起虚拟键盘
关于收起虚拟键盘,网上能找到的大多是这个: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_M ...
- Win7系统虚拟键盘打开的方法
有时候自己的键盘使用久了以后经常会突然坏掉,这个时候我们可以开启电脑自带虚拟键盘来解燃眉之急.那么Win7的虚拟键盘该怎么打开?今天就和小编一起来看看Win7系统虚拟键盘打开的方法吧. Win7系统虚 ...
- html win10虚拟键盘,笔记本电脑win10虚拟键盘打开的方法
win10是微软推出的新一代云操作系统,为用户提供多平台体验!如今,您可以在您的电脑中开启虚拟键盘,使用虚拟键盘轻松实现各种输入. 日常工作生活中,使用电脑时,有时需要开启虚拟键盘,包括"屏 ...
- qt qml virtrulKeyBoard custom style 虚拟键盘自定义样式方法
今天我把纠结了好几天的qml自带的虚拟键盘自定义样式的功能实现了,成功修改键盘的样式颜色. 首先把官网的文档先复制一下, 后面会写我自己的实际操作方法, 英文水平真的很重要!!! Keyboard S ...
- 关于USB虚拟键盘鼠标,在IOS上面遇FN键的问题实现。
最近接了一个任务,就是拿USB单片机做一个鼠标和键盘.合成的,其实网上包括芯片生产商都有案例,太多了,但是,都没有谁提起怎么才能支持苹果手机(15以上系统)及苹果电脑的FN键问题.因为FN呢,本身没有 ...
- 计算机怎样打开鼠标点的键盘,如何打开计算机虚拟键盘?五种打开计算机虚拟键盘的方法简介...
随着社会的发展和时代的进步,人们的生活越来越丰富多彩.越来越多的电子产品的出现给人们的生活增添了无限的兴奋.如今,计算机已成为人们生活中必不可少的电子产品之一.我们总能在生活中看到计算机.当然,键盘经 ...
- android平板电脑的虚拟键盘,win10平板电脑不弹出虚拟键盘的两种解决方法
平板电脑升级到了最新版Windows10系统后,发现在开机的时候没有弹出虚拟键盘,这样就没办法打字了,此问题对我们来说其实是比较少见的,如果真的出现这样的情况怎么办?今天小编就为大家整理了win10平 ...
- html win10虚拟键盘,五种打开win10虚拟键盘的方法 win10虚拟键盘快捷键
电脑在使用的过程中,有时会遇到只有鼠标或实体键盘部分按键失灵,或为了体验系统自带的虚拟键盘等情况.此时就需要开启系统的屏幕键盘.屏幕键盘是一个模拟键盘的系统软件,必要的时候可以代替物理键盘Win10做 ...
最新文章
- MySQLFabric概述
- cront 的应用(摘自鸟哥的私房菜)
- 使用word完成毕业论文的所有详细步骤
- JMeter(十三)-代理服务器录制脚本
- luna16标签数据里的xyz,以及CT的dicom.ImagePositionPatient里的三个值分别代表哪些轴的初始点
- windows2003密码忘记了该如何处理
- 【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览
- Java 标准开发包_JDK 9系列全套官方下载链接
- Android之离线词典
- django 一个项目多个App项目搭建
- 如何将npy导入matlab,如何在Matlab中读取.npy文件(How to read .npy files in Matlab)
- 为啥苹果手机连无线无网络连接服务器,苹果手机网络无法连接怎么回事
- 开心网CEO程炳皓称开心微博将一周内对外公测
- 免费的云数据库平台Planetscale
- Pixelmator Pro Mac(图像编辑软件)
- Jetpack Room 使用及原理解析
- 工业4.0时代 个性化定制掀起制造业新篇章
- 【软件测试】接口——基本测试流程
- python添加背景音乐
- Linux常用工具大全
热门文章
- 信息学奥赛C++语言: 博物馆
- 12 FI配置-财务会计-分配会计核算原理至分类帐组
- python中什么叫函数_Python 基础起步 (十) 什么叫函数?
- 字符串Ascll格式转16进制
- 模型计算量(FLOPs)和参数量(Params)的理解
- 04简单线性回归实战
- Android-Socket的最基础实现以及遇见在2.3可用4.3不可用的解决方法
- caffe loss层
- 目标2020:'鼠'你最棒!
- phpcmsV9一、二级导航栏目loop循环输出、当前高亮显示