处理键盘通知的一些补充
来源:互联网 发布:我的世界羊毛数据值 编辑:程序博客网 时间:2024/06/05 02:13
处理键盘的时候遇见了这么一种情况,当前页面的UITextField被遮挡,点击按钮会从底部弹出一个透明背景的输入框,这个弹窗里的UITextField也会被键盘遮挡,所以这个类里也增加了键盘通知。
这种情况的的结果就是,当弹窗里的UITextField处于焦点时,背景页面里的事件也会触发,背景页和弹窗页同时都有页面滚动的效果。
解决办法:
在UITextFieldDelegate中的textFieldShouldBeginEditing:代理方法中注册键盘通知,在监听方法里,接收到UIKeyboardDidHideNotification时,处理完自己需要视图滚动之后,在通知中心移除自己。
附上精简代码
注册键盘通知
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardObserver:) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardObserver:) name:UIKeyboardDidHideNotification object:nil]; return YES;}在监听方法中接收到键盘收起的事件后移除监听
-(void)keyboardObserver:(NSNotification*)noti{ NSValue *value = [noti.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; CGRect keyframe = [value CGRectValue]; if ([noti.name isEqualToString:UIKeyboardDidShowNotification]) { } }else if ([noti.name isEqualToString:UIKeyboardDidHideNotification]){ //do something... [[NSNotificationCenter defaultCenter] removeObserver:self]; }}
这个解决办法的好处在于,只有当某个输入框成为焦点的时候,才会响应键盘通知,当键盘收起的时候,通知中心移除监听者。单个页面多个输入框,多个页面多个输入框(类似弹窗和背景页都会有输入框的情况)不会互相影响。
也就是是说,处理键盘事件的生命周期只有在某一个输入框成为焦点开始,到键盘收起的时间。
0 0
- 处理键盘通知的一些补充
- 关于获取键盘通知信息的处理
- 关于获取键盘通知信息的处理
- 处理键盘通知
- 处理iOS键盘通知
- 处理键盘通知
- ios 利用通知处理键盘的显示与隐藏
- 键盘的通知
- 键盘通知的类型
- ios-day08-02(ios的通知机制:通知的发布、监听、移除,一些常见的系统通知、键盘状态的通知、通知和代理的异同)
- CDH5实践(补充)一些问题的处理
- Notification通知栏图标5.0以后效果不同的细节补充和处理
- 键盘的通知 文本框跟随键盘移动
- 关于ssm异步处理发送异步通知的一些问题
- 键盘的关闭打开通知
- iOS 系统 键盘的通知
- 获取键盘通知的 UserInfo
- Jackson 的一些补充
- android电话接通状态下,关机铃声无法从外放输出
- swfupload 上传 问题的处理
- android 不同分辨率的LCM进行兼容
- 代码面试题:Majority Number
- .net序列化及反序列化
- 处理键盘通知的一些补充
- android 玩愤怒小鸟等全屏游戏时TP失效
- C++ 中的 new
- [PowerManagement]Linux的Suspend流程
- android 虚拟按键是通过哪种机制上报的?
- Ubuntu12.04-64 linphone 编译
- Getting an Ubuntu 12.04 machine to give you boot messages
- java分页的思路
- iOS开发,调用打电话,发短信,打开浏览器