退出键盘:

  方法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. poj 2905 双向队列(待补充)

    Parallel Computer Simulator   Description Programs executed concurrently on a uniprocessor system ap ...

  2. 解决failed to push some refs to git

    Administrator@PC-20150110FGWU /K/cocos2d/yc (master) $ git push -u origin master To git@github.com:y ...

  3. [ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)

    The Embarrassed Cryptographer Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11978   A ...

  4. JAVA入门[21]-Jedis操作redis示例

    本节目标 通过JedisPool获取Jedis示例,并完成对redis 简单的Key-value读写操作. 完整代码结构如下: redis服务端 在本地运行redis-server.exe,然后在re ...

  5. 学习customEvent

    title: 认真学习customEvent tags: DOM date: 2017-7-22 23:20:57 --- 最近要实现一个模拟的select元素组件,所以好好看了这个自定义事件api, ...

  6. 自学Zabbix3.10.1.3-事件通知Notifications upon events-媒介类型Jabber

    自学Zabbix3.10.1.3-事件通知Notifications upon events-媒介类型Jabber Jabber有第三方插件,能让Jabber用户和MSN.YahooMessager. ...

  7. spring boot自定义starter

    1.spring boot 项目中自定义jar包 2.项目目录 3.src/main/java 下面写自己的方法,重点是 resources 下面的文件,在resources下面新建文件夹名字为 ME ...

  8. Angular 非父子组件间的service数据通信

    完成思路:以service.ts(主题subject---订阅sbuscribe模式)为数据中转中间件,通过sku.ts的数据更改监测机制,同步更改service.ts中的数据,同时buy.ts组件实 ...

  9. 深入理解 while(cin >> x >> y)

    初步分析 在C++中实现连续输入时,我们会用到 while(cin >> x >> y) ,但是它的条件判断的原理可不那么好想,这里我分享一下我对于它的见解. 首先来看 cin ...

  10. mongodb命令行基础语法

    首先是安装并配置mongodb,这个请自行百度,安装完成后打开cmd命令输入mongo.我们现在先做一个例子吧,假设有一个班级叫c1,里面有若干个人,里面的人有姓名.年龄.性别和班级,我们分别对他们进 ...