夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> Android/移动互联网/物联网/
iOS 关于退出键盘两种方法和避免遮挡
夜鹰教程网 来源:www.yyjcw.com 日期:2019-1-9 19:07:43
iOS 关于退出键盘两种方法和避免遮挡

退出键盘:


   方法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


复制链接 网友评论 收藏本文 关闭此页
上一条:已经是第一条了  下一条: 安卓apk签名常见命令
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
在Struts 2中使用JSON Ajax支持
解决JSP中使用request乱码问题
JSP+JavaScript打造二级级联下拉菜…
Tomcat中文手册(1)
JSP及Servlet中遇到的多线程同步
详解:JSP和Servlet中的绝对路径和…
JSP Struts之HTML标签库详解
自定义JSP标签
JSP中的include指令
errorPage设置方法--JSP
JSP 国际化-格式化货币和日期
九个隐含对象使用总结JSP的
Tomcat中文手册(2)
tomcat6关于EL表达式的一个错误
jsp分页技术代码
  最近更新
iOS 关于退出键盘两种方法和避免遮…
安卓apk签名常见命令
把activity当成dialog使用
如何选择APP开发框架
Layout _width ,Layout_height和…
Android调用百度地图使用时出现in…
安卓刷机术语
android端实现断点续传功能
利用TCP/IP实现Android客户端与服…
Invalid project description ove…
推荐使用的meta标签
手机网站用Bootstrap还是jQuery M…
如何让手机访问PC网站自动跳转到手…
提升HTML5的性能体验系列之一 避免…
Android和IOS 字体该做多大合适?…

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3