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

摘要:
关于iOS开发中键盘的退出,其实方法有很多中,而且我也学会了不少,包括各种非纯代码界面的退出。1)点击Return关于点击Return是要实现一个代理方法那就是1-textFieldShouldReturn:textField2{345[textFieldresignFirstResponder];6returnYES;7}但是在这之前你需要让你想要退出键盘所在类中实现一个代理那就是UITextFieldDelegate:@interfaceiCocosFBViewController()实现了这个代理之后还没有完,还要定义一个属性:@propertyUITextField*text;最后在相应的启动方法中遵守这个代理:_text.delegate=self;那么到这一切就OK了,在任意非方法行的实现文件中输入上面的代理方法就可以实现点击Return退出键盘了。

关于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:@"
"]) {
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我猜可能是叫你去睡觉的意思!。
如果能够匹配就刚好是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];
}

免责声明:文章转载自《iOS开发——OC篇&纯代码退出键盘》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇实验 1 : Mininet 源码安装 和可视化拓扑工具socket.sendUrgentData判断网络远端是否断开连接下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS开发时间戳与时间,时区的转换,汉字与UTF8,16进制的转换

原文:http://blog.sina.com.cn/s/blog_68661bd80101njdo.html //获取当前系统的时间戳+(long)getTimeSp{    long time;    NSDate *fromdate=[NSDate date];    time=(long)[fromdate timeIntervalSince197...

iOS开发——你真的会用SDWebImage?

http://www.cocoachina.com/ios/20160503/16064.html 本文授权转载,作者:hosea_zhou(简书) SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率很高。但是你真的会用吗?本文接下来将通过例子分析如何合理使用SDWebImage。 使用场景:自定义的UITableViewCell上有图片需要...

5+ App开发入门指南

HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML、JS、CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实现与原生App同样强大的功能和性能。 HTML5 Plus规范 通过HTML5开发移动App时,会发现HTML5很多能力不具备。为弥补HTML5能力的不足,在...

IOS开发之内存管理--dealloc该写些什么

一句话:dealloc 就是释放当前类所持有的对象即可。不是当前类持有的对象,就不要去释放了。但是当前类持有的对象,一定要释放。 推荐以下视频,虽然简单,但是基本原理讲清楚了。 http://code4app.com/course/24-2904-3022 在非ARC开发环境中,dealloc是类释放前,清理内存的最后机会。到底那些变量和属性该释放呢,一些...

iOS开发语法篇block详解

一:基本定义 /*初步上式block定义的一些理解和解释,接下来会详解: *block名为myBlock,结合C的函数指针,myBlock为block体的指针,指向block体的入口地址 *int result = myBlock(5) <==> ^(int num){return num*num}(5)//将5传给num *回调时可以将my...

【面试】iOS 开发面试题(二)

1. 我们说的oc是动态执行时语言是什么意思?  答案:多态。主要是将数据类型的确定由编译时,推迟到了执行时。  这个问题事实上浅涉及到两个概念。执行时和多态。  简单来说。执行时机制使我们直到执行时才去决定一个对象的类别,以及调用该类别对象指定方法。  多态:不同对象以自己的方式响应同样的消息的能力叫做多态。意思就是如果生物类(life)都用有一个同样...