博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 输入时键盘处理问题
阅读量:7042 次
发布时间:2019-06-28

本文共 3156 字,大约阅读时间需要 10 分钟。

在iOS的开发过程中,有时候需要处理键盘的弹出和收回。

以及键盘弹出收回时、view的处理

最正规的办法,用通知

 

step 1:

在进入视图的时候添加监视:(viewDidLoad什么的)

 

//监听键盘的通知    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

 

step 2:
在键盘动作的时候移动视图:

 

- (void)keyboardWillShow:(NSNotification *)notification {        /*     Reduce the size of the text view so that it's not obscured by the keyboard.     Animate the resize so that it's in sync with the appearance of the keyboard.     */    NSDictionary *userInfo = [notification userInfo];        // Get the origin of the keyboard when it's displayed.    NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];    // Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position.    CGRect keyboardRect = [aValue CGRectValue];    keyboardRect = [self.view convertRect:keyboardRect fromView:nil];        CGFloat keyboardTop = keyboardRect.origin.y;    CGRect newTextViewFrame = self.view.bounds;    newTextViewFrame.size.height = keyboardTop - self.view.bounds.origin.y;        // Get the duration of the animation.    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];    NSTimeInterval animationDuration;    [animationDurationValue getValue:&animationDuration];        // Animate the resize of the text view's frame in sync with the keyboard's appearance.    [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:animationDuration];        self.reportTableView.frame = newTextViewFrame;    [UIView commitAnimations];}- (void)keyboardWillHide:(NSNotification *)notification {        NSDictionary* userInfo = [notification userInfo];        /*     Restore the size of the text view (fill self's view).     Animate the resize so that it's in sync with the disappearance of the keyboard.     */    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];    NSTimeInterval animationDuration;    [animationDurationValue getValue:&animationDuration];        [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:animationDuration];        self.reportTableView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height  - 55 - 64);        [UIView commitAnimations];}

 

 

step 3:
在退出视图的时候注销通知
viewDidUnload:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];

 

step 4:

dealloc:

-(void)dealloc{    [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:nil];}

 

这些代码是摘自apple sample code KeyboardAccessory.

 

细节自己修改下就好了,比如那个reportTableView、CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height  - 55 - 64)

 

转载地址:http://ijxal.baihongyu.com/

你可能感兴趣的文章
云MSP服务案例丨某知名制造集团的Oracle RAC部署实践 ...
查看>>
如何基于ReplayKit实现低延迟rtmp推屏
查看>>
说说JSON和JSONP,也许你会豁然开朗
查看>>
没有所谓好与不好,只是能否适用和用的好
查看>>
程序员写简历时必须注意的技术词汇拼写(持续更新...)
查看>>
ams光学传感器助力小米手机创新发展
查看>>
Python 特色介绍
查看>>
JavaScript_知识点梳理note1
查看>>
PostgreSQL 开启with-llvm(JIT)后,新增插件异常(clang: Command not found)处理
查看>>
思考设计SQL优化方案
查看>>
tomcat 调优-生产环境必备
查看>>
浅析C++的引用与const指针与各种传递方式
查看>>
Java并发编程75道面试题及答案
查看>>
仓储+调度,YOGO智能配送站能否改变外卖配送格局?
查看>>
jQuery-easyui和validate表单验证实例
查看>>
【对讲机的那点事】5G时代的到来,2G和3G将会被关停?
查看>>
DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--week3 超参数调试、Batch正则化和程序框架...
查看>>
NSMutableArray 简单细说
查看>>
Docker 助力百年研发院校的现代化改造,让 IT 资源物尽其用!
查看>>
各个 C# 版本的主要特性、发布日期和发布方式(C# 1.0 - 7.3)
查看>>