退出键盘:

  方法1:不使用代理,直接使用;

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

[self.textField resignFirstResponder];

}

方法2:使用代理,通过点击键盘Return键收起键盘

- (BOOL)textFieldShouldReturn:(UITextField *)textField{

//textField放弃第一响应者 (收起键盘)

[textField resignFirstResponder];

return YES;

}

两种方法可以同时添加,还有几种方法:

这三种方法在调用时,也都可以退出键盘。

[self.view endEditing:YES];
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

避免键盘弹出遮挡输入框:

方法1:自己代码集成。

在viewDidLoad中注册两个通知,监听键盘弹出和退出

 //增加监听,当键盘出现或改变时收出消息 //增加监听,当键退出时收出消息
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];  //增加监听,当键退出时收出消息
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

- (void)keyboardWillShow:(NSNotification*)aNotification {

NSDictionary *info = [aNotification userInfo];

CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

//目标视图UITextField

CGRect frame = self.textField.frame;

int offsetY = frame.origin.y + frame.size.height - (self.view.frame.size.height - keyboardSize.height);

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@"ResizeView" context:nil];

[UIView setAnimationDuration:animationDuration];

if(offsetY > 0)

{

self.view.frame = CGRectMake(0, -offsetY, self.view.frame.size.width, self.view.frame.size.height);

}

[UIView commitAnimations];

}

//键盘隐藏后将视图恢复到原始状态

-(void)keyboardWillHide:(NSNotification *)aNotification

{

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@"ResizeView" context:nil];

[UIView setAnimationDuration:animationDuration];

self.view.frame =CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

[UIView commitAnimations];

}

方法2:使用IQKeyboardManager:

github地址: https://github.com/hackiftekhar/IQKeyboardManager


iOS 关于退出键盘两种方法和避免遮挡的更多相关文章

  1. IOS发送Email的两种方法

    IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. ...

  2. Android全局退出的两种方法

    第一种方法参考<第一行代码>78页 建立一个ActivityCollector类,提供静态方法addActivity,fininshAll(以list为容器) 然后我们建立的Activit ...

  3. IOS发送Email的两种方法-备

    1.openURL 使用openURL调用系统邮箱客户端是我们在IOS3.0以下实现发邮件功能的主要手段.我们可以通过设置url里的相关参数来指定邮件的内容,不过其缺点很明显,这样的过程会导致程序暂时 ...

  4. ios实现倒计时的两种方法

    方法1:使用NSTimer来实现 主要使用的是NSTimer的scheduledTimerWithTimeInterval方法来每1秒执行一次timeFireMethod函数,timeFireMeth ...

  5. Cisco设备IOS的恢复方法 两种方法

    如果不小心把Router或者Switch的IOS删除了,特别是Flash中的IOS和ROM中的Mini IOS都没有了的话,连启动都不行的话,有什么方法恢复它呢?答案是方法不只一种,而是两种.其实是我 ...

  6. java 获取键盘输入常用的两种方法

    java 获取键盘输入常用的两种方法 方法1: 通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine ...

  7. ios开发——实用技术OC篇》倒计时实现的两种方法

    倒计时实现的两种方法 timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了,代码如下: secondsCountDow ...

  8. 【转】 iOS 两种方法实现左右滑动出现侧边菜单栏 slide view

      原文: http://blog.csdn.net/crayondeng/article/details/9057637 --- 关于评论中,很多网友都是需要这部分的相关源码,其实在我上传的新浪微博 ...

  9. iOS 两种方法实现左右滑动出现侧边菜单栏 slide view

      现在很多的APP中都有slide view,左右滑动出现侧边菜单栏的功能,Weico这个应用就有. 网上有很多第三方的类库实现了这种效果,其实自己代码写的话也是很简单的,下面我将介绍两种方法实现s ...

随机推荐

  1. js比较日期大小

    第一种方法: var starttime = "2007-1-2 7:30"; var endtime = "2007-2-31 8:30"; alert(Co ...

  2. PHP中的会话控制

    了解HTTP(超文本传输协议)可以知道,它采用请求与响应的模式,最大的特点就是无连接无状态. 无连接:每次连接仅处理一个客户端的请求,得到服务器响应后,连接就结束了 无状态:每个请求都是独立的,服务器 ...

  3. Jenkins+tomcat+jdk setup

    Jenkins download: http://jenkins-ci.org/ jdk version:jdk-7u45-linux-x64.tar.gz tomcat version:apache ...

  4. C - The C Answer (2nd Edition) - Exercise 1-7

    /* Write a program to print the value of EOF. */ #include <stdio.h> main() { printf("EOF ...

  5. 【ASP.NET】DataTable序列化

    问题描述 主要解决DataTable数据转化为JSON,从Controller传递数据给View的问题. 1   内容区 提供如下方法,仅供参考 public static class ObjectE ...

  6. 输入url会发什什么

    从输入url到页面加载完成发生了什么 整体来说有几个基本的点: 1.浏览器的地址栏输入url并按下回车 2.浏览器查找当前url是否存在缓存,并比较缓存是否过期 3.DNS解析url对应的IP 4.根 ...

  7. java.net.BindException: Cannot assign requested address: bind

    异常信息 时间:2017-03-16 10:21:05,644 - 级别:[ERROR] - 消息: [other] Failed to start end point associated with ...

  8. springMVC上传错误StandardMultipartHttpServletRequest

    异常信息 java.lang.ClassCastException: org.springframework.security.web.servletapi.HttpServlet3RequestFa ...

  9. python列表的操作

    1.列表的增加: li=[] li.append("hha") print(li) li=[] li.append("hha") print(li) li.in ...

  10. fatal: Authentication failed for “someurl”

    一.前言 我们在公司做项目,很多时候会遇到这个问题:Git failed with a fatal error. Authentication failed for ‘ http// xxx..... ...