关于iOS开发中键盘的退出,其实方法有很多中,而且笔者也也学会了不少,包括各种非纯代码界面的退出。

但是最近开始着手项目的时候却闷了,因为太多了,笔者确实知道有很多中方法能实现,而且令我影响最深的就是 EndEditing,但是因为即有textView,又有TextField而且他们各有不同的方法,虽然笔者现在搞懂了,但是不知道什么时候又不记得 了,而且虽然感觉很简单现在感觉很简单的样子,但是对于没有真正弄清楚的人来说,也是一件痛苦的事情,哈哈!

其实这里纯代码界面推出如果用到Xib何Storyboard上面去还是一样的思路操作,只不过笔者在开发的时候是在纯代码界面遇到的问题,所以久以此命名。

下面大家介绍怎么在纯代码的情况下,退出(隐藏)键盘,Xib和StoryBoard情况下这里就不解释了(照此思路)。

一:UITextField

关于UITextFiel个人感觉又很多中方法,但是最近开发中我用的最多的也就是这两种,根据和已经在公司上班的同行的聊天中,现在开发中用的最多的也就是这两种,当然如果你还想去学习其他的方法或者更牛逼的方法,亦或者你想在一般的程序员面前装一下逼那也是可以的。

1)点击Return

关于点击Return是要实现一个代理方法那就是
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{

   [textField resignFirstResponder];
    return  YES;
}
但是在这之前你需要让你想要退出键盘所在类中实现一个代理那就是UITextFieldDelegate:
@interface iCocosFBViewController ()
实现了这个代理之后还没有完,还要定义一个属性:
@property (nonatomic, weak) UITextField *text;
最后在相应的启动方法中遵守这个代理:
    _text.delegate = self;

那么到这一切就OK了,在任意非方法行的实现文件中输入上面的代理方法就可以实现点击Return退出键盘了。

2)触摸屏幕

这个触摸屏幕就简单了,说先你需要定义一个属性text(同上)。你想如果你要退出键盘,可定是当你摸一下屏幕键盘就立刻退出,你不可能海让他等个一辆秒把,什么你会?那你就一直等下去把。
既然要立刻就退出,那么在屏幕触摸的代理方法中我们知道有一个方法撒撒Began方法:
对了就是他-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event我们只需要在这里实现退出键盘的代码就可以,这里退出键盘的代码貌似也有两种,,但是你想你既然想退出键盘肯定是介绍编辑,除非你还有其他 的地方要输入,那就不叫退出键盘了,所以我们使用最多的就是直接End,在这个方法中使得文本直接End编辑,End。。End。。。还没听懂,算了直接 给你看代码,在看不懂还是回家种田把!
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.text endEditing:YES];
}

二:TextView

关于TextView方法基本上和上面的一样知识代理和代理方法不一样,但是思路完全是一模一样的,所以我就不做太多介绍。

1)Return

实现一个代理方法那就是
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    return YES;
}
但是在这之前你需要让你想要退出键盘所在类中实现一个代理那就是UITextViewDelegate:
@interface iCocosFBViewController ()
实现了这个代理之后还没有完,还要定义一个属性:
@property (nonatomic, weak) UITextView *text;
最后在相应的启动方法中遵守这个代理:
    _text.delegate = self;

。。。。。
。。

2)触摸屏幕
。。。。
。。。
。。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.text endEditing:YES];
}

最后总大家总结一点,那就是UITextField和UITextView退出键盘的相同点与不同点:
其实这两个控制退出键盘的方法80%都是一样的,比如如果你是要触摸屏幕退出那么都是实现这个方法
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.text endEditing:YES];
}

然后,然后就没有然后了。。。。。。

关于实现代理方法不同的地方就是代理名,属性名,还有就是代理方法名不同,只是UITextView这个代理方法中用到了一个匹配字符串,\n,不要问这是撒,我也不知道。。。。左看右看还是没看懂,\->n我猜可能是叫你去睡觉的意思!。
如果能够匹配就刚好是TextField的方法,,,

。。。


当然还有一些触摸背景退出的,这里给个思路,直接在上面放一个UIButton设置成界面大小,并设置为透明,最后设置他的UserEnale或者userInteractionEnabled为NO,再实现点击事件久可以。
 
 
 
 这里最后,介绍一下关于Swift推出键盘的方法(只是简单的介绍):
 

//    第一种是遵循代理,是在代理方法中实现键盘的隐藏

  1. override func didReceiveMemoryWarning() {
  2. super.didReceiveMemoryWarning()
  3. // Dispose of any resources that can be recreated.
  4. }
  5. // 第一种方法。用代理实现键盘的隐藏
  6. func textFieldShouldReturn(textField: UITextField) -> Bool {
  7. if (textField == self.text) {
  8. textField.resignFirstResponder()
  9. //            self.view.becomeFirstResponder()
  10. }
  11. return true;
  12. }

//    第二种方法实现键盘的隐藏

  1. override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
  2. self.text.resignFirstResponder()
  3. self.pwdtext.resignFirstResponder()
  4. }
  5. }
 
 
 

iOS开发——OC篇&纯代码退出键盘的更多相关文章

  1. iOS开发UI篇—从代码的逐步优化看MVC

    iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他 ...

  2. iOS开发数据库篇—SQL代码应用示例

    iOS开发数据库篇—SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在 ...

  3. 李洪强iOS开发之后使用纯代码实现横向滚动的UIScrollView

    李洪强iOS开发之后使用纯代码实现横向滚动的UIScrollView (VTmagic是一个实现左右滚动的控制器的框架,也可以实现此功能) 实现的效果:  01 - 创建四个控制器 02 - 定义需要 ...

  4. iOS开发——OC篇&常用关键字的使用与区别

    copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别 最近在学习iOS的 ...

  5. iOS开发——OC篇&OC高级语法

    iOS开发高级语法之分类,拓展,协议,代码块详解 一:分类 什么是分类Category? 分类就是类的补充和扩展部分 补充和扩展的每个部分就是分类 分类本质上是类的一部分 分类的定义 分类也是以代码的 ...

  6. iOS开发——OC篇&消息传递机制(KVO/NOtification/Block/代理/Target-Action)

     iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action)   今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Fou ...

  7. iOS开发小技巧--纯代码自定义cell

    纯代码自定义cell 自定义cell的步骤(每个cell的高度不一样,每个cell里面显示的内容也不一样) 1.新建一个继承自UITableViewCell的子类 2.在initWithStyle:方 ...

  8. iOS开发——OC篇&协议篇/NSCoder/NSCoding/NSCoping

    协议篇/NSCoder/NSCoding/NSCoping 协议声明类需要实现的的方法,为不同的类提供公用方法,一个类可以有多个协议,但只能有一个父类,即单继承.它类似java中的接口. 正式协议(f ...

  9. iOS开发——OC篇&特殊数据类型

    一些特殊的数据类型 id.nil.Nil.SEL ,IMP Objective-C中有一些很有趣的数据类型经常会被错误地理解.他们中的大多数都可以在/usr/include/objc/objc.h或者 ...

随机推荐

  1. [基础] 重载的时候什么时候用引用&

    一般返回值还要继续被处理,而不仅仅是得到其值的时候,返回引用& 一般有[], =, ++, --, 还有输入输出运算符<<, >> Classtype &ope ...

  2. 衬衫面料品牌:Alumo_衬衫_男装_男装:衬衫、法式衬衫、袖扣领带、西服西裤等男士正装服饰-仕族官网

    衬衫面料品牌:Alumo_衬衫_男装_男装:衬衫.法式衬衫.袖扣领带.西服西裤等男士正装服饰-仕族官网 衬衫面料品牌:Alumo

  3. 第一节:Scrapy开源框架初探

       Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中.  具体开发流程如下:   一.确定待抓取网站 当您需要从某 ...

  4. jni java和C之间的值传递(int String int[])

    我们通过jni调用C代码不可能每次只是去调一个方法,通常,我们需要传递一些值过去. 例如,播放电影,那就肯定需要你把电影的 url给 C的播放器吧,等等. 接下来就看一看怎么去传递这些值: 首先是最简 ...

  5. log4j配置文件详解---转

    使用步骤注意: 1. 从http://logging.apache.org/log4j/1.2/ 下载文件 2. 在src目录下加入log4j.properties,将jar包放入build -pat ...

  6. JS可控制的图片自动循环播放查看效果

    JS可控制的图片自动循环播放查看效果 <html> <head> <title>JS可控制的图片自动循环播放查看效果丨芯晴网页特效丨CsrCode.Cn</t ...

  7. python之Lambda函数---笔记

    <Python3 程序开发指南> Lambda函数,是一个匿名函数,创建语法: lambda parameters:express parameters:可选,如果提供,通常是逗号分隔的变 ...

  8. Python开发【第一篇】:目录

    本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! Python开发[第一篇]:目录 Python开发[第二篇]:初识Python ...

  9. 001-视频 video

    <!DOCTYPE HTML> <html> <body> <video width="320" height="240&quo ...

  10. 3xian之所在

    最后一天,漫天飘起了雪花,假装欢送我离去. 这次WF之战不太顺利,早期的C题大概花了1秒钟构思,然而由于输出格式多了一个空格直到两个半小时才逃脱Wrong Answer的纠缠.还好lynncui在期间 ...