以下是关于自己在项目中关于调用IOS键盘以及监听个别按键时的一些心得:

一、键盘打开方式

UITextField *field = [[UITextField alloc]  initWithFrame:CGRectFrame(x,y,width,height)];                                               [field becomeFirstResponder];

键盘的调用可以通过调用becomeFirstResponder使得field成为第一响应者,从而调出键盘;

二、在键盘打开以及关闭过程中,可以添加通知事件来处理某些工作

//键盘显示通知,会调用selector参数中对应的keyboardWillShow(自定义的)函数

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)                                name:UIKeyboardWillShowNotification object:nil];

//键盘隐藏通知,会调用selector中对应的keyboardWillHide(自定义的)函数

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

一般可以在键盘显隐时对对应的view进行布局修改,防止键盘遮挡等问题

三、避免使用第三方输入法时,键盘显示时会出现调用三次二中使用的keyboardWillShow函数

可以设置一个全局整型参数,第一次调用时keyboardWillShow中可计为1,后两次调用时则根据这个参数来判断是否执行相关代码,而在键盘隐藏时或其他需求的地方重置参数为0即可。

四、UITextField内容监听方法

A.UITextField *textField = [[UITextField alloc] initWithFrame:rect];

[textField addTarget:self action:@selector(clickReturnKeyDone) forControlEvents:UIControlEventEditingDidEndOnExit];//编辑返回、go、return等操作

[textField addTarget:self action:@selector(textChangeBegin) forControlEvents:UIControlEventEditingDidBegin];//编辑开始事件

[textField addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];//编辑改变事件

根据指定的UIControlEvent事件去调用指定的函数,执行需要的操作。

B.也可通过实现UITextFieldDelegate中的函数来执行某些操作

首先在.h文件中添加对应的UITextFieldDelegate,其次给对应的UITextField文本框添加协议

textField.delegate = self;  具体的事件可自行查看UITextFieldDelegate协议中的函数实现

五、监听键盘上的删除以及回车按键

网上有建议自定义UITextField的,然后重写其中的deleteBack函数来监听对应的删除按键,下面我是通过UITextFieldDelegate协议中的一个函数来监听的:

//这个函数时文本框改变时调用的方法,其中的string参数是用户本次输入到文本框的字符串

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

if ([textField.text isEqualToString:@""]) { //这个时候得到的还是文本框未改变时的字符串

if ([string length] < 1 ) {

//如果用户点击的删除按键,那么string是空的,没有长度

}

if ([string length]>0) {

int result = [string characterAtIndex:0];

if (result == 10) {

//用户点击了回车

}

i f (result == 32) {

//用户点击了空格

}

}

}

return YES;

}

以上是本人在使用IOS键盘时的一些心得,后续有新的内容会持续更新,如有疑问或者错误的地方欢迎指正,谢谢

ios键盘done中文_关于IOS键盘的一些调用心得与坑相关推荐

  1. ios web应用程序_使用ios 13改善应用程序的可访问性

    ios web应用程序 I know, iOS 13 has been with us for quite some time now, WWDC 2020 is just around the co ...

  2. ios git解决冲突_适用于iOS和Linux的远程同步解决方案:Git和工作副本

    ios git解决冲突 如何在iOS上使用Git设置跨平台的云同步解决方案以在任何地方工作. (How to set up a cross-platform cloud sync solution f ...

  3. ios 扫码枪外设 键盘模式_苹果iOS 13新增滑行键入功能 开启新键盘模式

    滑行输入又称扫屏输入,是近年触摸屏幕/触摸键盘上流行的输入技术,它的特点是:你只需要在要录入单词的几个字母之间滑行,系统词库就能把你需要的单词给找出来,无需考虑顺序.排列.冗余甚至无需考虑多输入进去的 ...

  4. ios查看线程数量_关于iOS多线程,你看我就够了(已更新)

    作者:@翁呀伟呀 授权本站转载. 在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是 ...

  5. ios沙箱模式开启_【iOS】苹果IAP(内购)中沙盒账号使用注意事项

    目标 沙盒账号的正确使用方式 沙盒账号使用的注意事项 1.沙盒账号是什么 iOS应用里面用到了苹果应用内付费(IAP)功能,在项目上线前一定要进行功能测试.测试肯定是需要的,何况这个跟money有关. ...

  6. java 键盘输入 中文_201671010127 2016-2017-11 从键盘读入中文字符串遇到的问题

    上周测试户籍管理系统时,我偶然发现了一个问题,在IDE下运行该程序时,如果输入为中文字符串时会遇到一些问题.下面我就以一个简单的程序来演示该问题: 首先我先写一个从键盘读入一个中文字符串,然后输出该字 ...

  7. win10 联想键盘快捷键关闭_这些Win10键盘快捷键你必须掌握,系统高手必备技能...

    随着微软即将对win7停止支持以及官方对win10的大力推广,win10的用户越来越多,大家对它的大部分功能都慢慢熟悉了,如果你还只是会用ctrl+c和ctrl+v,那就说明你out了.我们会发现真正 ...

  8. ios 监测网页按钮_苹果IOS备忘录便签软件敬业签恢复删除内容应该怎么操作?...

    敬业签是一款功能比较全面的苹果手机桌面备忘录便签软件,主要功能包括:云储存.多端云同步.提醒待办事项.时间管理.标记已完成.月视图和时间轴等.在使用苹果IOS备忘录便签软件敬业签的时候,如果不小心误删 ...

  9. h5 ios 滚动到底部_分享iOS平台使用H5原生滚动的下拉刷新功能v1.0.0 [不推荐]

    上一篇给大家分享了<使用H5原生滚动的上拉加载功能>,但是没有下拉刷新的功能,今天赶快补上. 我们在上一篇中提到,因为iOS下mui中的下拉刷新插件,使用的是自绘的模拟滚动条,不是原生的, ...

最新文章

  1. Flutter开发之布局-3-center(17)
  2. 【企业管理】2020年3-4 月 每日花语
  3. 带手势划动功能的日历源码
  4. r 保留之前曲线_生存曲线居然能够批量绘制了
  5. Centos中不从skel目录里向其中复制任何文件错误的解决方法
  6. win7超极本盘符不见找回文件的方法
  7. css-模态对话框的制作
  8. ORACLE 语句关联统计
  9. DOS批处理删除重复行
  10. 二分法查找c语言程序_用C++写二分查找了!【手绘漫画】图解LeetCode之搜索插入位置(LeetCode 35)...
  11. Android 表单之 TextView(文本框)详解
  12. [我的成长:1004期]春节快乐
  13. python 宏定义_Flask干货:Jinja2模板中的宏定义和使用
  14. 俄罗斯方块 java_java代码实现俄罗斯方块
  15. JAVA实现飞机大战详解
  16. 汇编语言典型例子详解_25个经典汇编程序案例
  17. ubuntu防火墙安装和设置-ufw
  18. 关于井冈山大学校园宽带WIFI多人共享解决的一些思路
  19. VPS、云服务器(云主机)和虚拟主机有何异同?
  20. 【腾讯TMQ】测试建模兵器谱

热门文章

  1. hashmap 扩容是元素还是数组_HashMap的扩容机制---resize()
  2. 癌症中克隆种群结构统计推断分析软件PyClone安装小记
  3. 北京大学现代农业研究院张华伟实验室招聘启示
  4. mSystems:干旱对土壤微生物组的影响
  5. 2019年上半年国内学者在植物领域共发表6篇Science, 1篇Nature,1篇Cell!
  6. MMinte:预测微生物群体内代谢物互作
  7. Nature综述:微生物构成的氮循环网络
  8. numpy使用[]语法索引二维numpy数组中倒数N列数据列的数值内容(accessing the last N columns in numpy array)
  9. R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot)
  10. 运维管理工具+chef+puppet+ansible+SaltStack