iOS开发——OC篇&纯代码退出键盘

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

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

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

一:UITextField

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

1)点击Return

关于点击Return是要实现一个代理方法那就是

1 -(BOOL)textFieldShouldReturn:(UITextField *)textField
2 {
3
4
5    [textField resignFirstResponder];
6     return  YES;
7 }

但是在这之前你需要让你想要退出键盘所在类中实现一个代理那就是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

实现一个代理方法那就是

1 -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
2 {
3     if ([text isEqualToString:@"\n"]) {
4         [textView resignFirstResponder];
5         return NO;
6     }
7     return YES;
8 }

但是在这之前你需要让你想要退出键盘所在类中实现一个代理那就是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.  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
     9             textField.resignFirstResponder()
    10 //            self.view.becomeFirstResponder()
    11         }
    12             return true;
    13     }
    14     

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

      override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        self.text.resignFirstResponder()
        self.pwdtext.resignFirstResponder()
    }

或许你还见过下面的方法:

//第1种收起键盘的方法

1 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
2 {
3 [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
4 }

//第2种收起键盘的方法

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
}
时间: 2024-10-10 23:21:16

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

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

iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他是否直接吃第五个,前面四个不用吃就饱了?) 1.完成基本要求的代码(使用了字典转模型和xib连线) (1)文件结构 (2)主要代码 字典转模型部分: YYappInfo.h头文件 // // YYappInfo.h // 12-视图改进(1) // // Created by apple on 14

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

iOS开发UI篇—从代码的逐步优化看MVC 一.要求 要求完成下面一个小的应用程序. 二.一步步对代码进行优化 注意:在开发过程中,优化的过程是一步一步进行的.(如果一个人要吃五个包子才能吃饱,那么他是否直接吃第五个,前面四个不用吃就饱了?) 1.完成基本要求的代码(使用了字典转模型和xib连线) (1)文件结构 (2)主要代码 字典转模型部分: YYappInfo.h头文件 1 // 2 // YYappInfo.h 3 // 12-视图改进(1) 4 // 5 // Created by a

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

iOS开发数据库篇—SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在ios项目中使用代码批量添加多行数据示例 代码示例: 1 // 2 // main.m 3 // 01-为数据库添加多行数据 4 // 5 // Created by apple on 14-7-26. 6 // Copyright (c) 2014年 wendingding. All rights

【好程序员笔记分享】——纯代码退出键盘

iOS培训------我的c语言笔记,期待与您交流! 关于iOS开发中键盘的退出,其实方法有很多中,而且笔者也也学会了不少,包括各种非纯代码界面的退出. 但是最近开始着手项目的时候却闷了,因为太多了,笔者确实知道有很多中方法能实现,而且令我影响最深的就是 EndEditing,但是因为即有textView,又有TextField而且他们各有不同的方法,虽然笔者现在搞懂了,但是不知道什么时候又不记得 了,而且虽然感觉很简单现在感觉很简单的样子,但是对于没有真正弄清楚的人来说,也是一件痛苦的事情,哈

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

iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action) 今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Foundation Framework的,不过本文中还介绍了一些超出Foundation Framework(KVO和Notification)范围的一些消息传递机制,另外还介绍了delegation,block和target- action. 大多数情况下,消息传递该使用什么机制,是很明确的了,当然了,在某

iOS开发——OC篇&常用问题解答(一)

常用问题解答 1.设置 ImagePicker 的大小 ImagePicker 在 Popover Controller 总是以默认大小显示,设置 popoverContentSize 属性似乎无用.解决办法是将ImagePicker “包含”到一个定制的 ViewController 中,然后再 presentPopover 这个 ViewController : UIViewController *containerController = [[UIViewController alloc]

iOS开发——OC篇&常用问题解答(二)

101.编译错误:ld: library notfound for -lPods 当项目中使用了 cocoaPods 时,经常出现此错误(通常是 release 的时候). 这是由于 pod install 后,cocoaPods 会创建一个新的 workspace.你必须关闭项目并重新打开.问题即可解决. 102.为什么 iOS 的时间总是比真实时间慢8小时 例 如,一个北京时间"2014-4-4 22:00"(字符串),需要转换成 NSDate.字符串转换成 NSDate 一般是通

iOS开发-OC篇-NSDate

今天总结一下OC中NSDate的一些简单的用法,注意可不是NSData哦! NSDate的使用 1> NSDate初始化方法 //获取当前时间 NSDate * date = [NSDate date]; //返回以当前时间为基准,然后过了secs秒的时间 [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24]; //返回以lastDate为基准,然后过了secs秒的时间 [NSDate dateWithTimeInterval:60 * 60 *

iOS开发-OC篇-NSSet,NSNumber

最近回顾了OC的一些基本知识,发现确实遗忘了很多重要的东西,今天整理了一些小的知识点,和大家分享一下. iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作. 1.NSNumber包装类 1>  普通初始化 NSNumber * num1 = [[NSNumber alloc] initWithInt:20]; NSNumber * num2 = [NSNumber numberWithChar:'a']; 2>字面量初始化 NSNumber * num3 =