文档章节

键盘通知keyboard,获取键盘高度进行操作

iShown
 iShown
发布于 2016/02/26 11:09
字数 357
阅读 139
收藏 0
iOS

 

iOS博主造了个轮子,引入.h就可以自动偏移view,防止界面被键盘遮挡

 

-------------------分割线-------------------

 

博客更新,使用新的方法

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onKeyboardNotification:) name:UIKeyboardWillChangeFrameNotification object:nil];

这个方法可以检测输入面板切换时候的通知,更加有效

- (void)onKeyboardNotification:(NSNotification *)notification {
    CGRect keyboardFrame = ((NSValue *) notification.userInfo[UIKeyboardFrameEndUserInfoKey]).CGRectValue;

...
  }

-------------------分割线-------------------

 

键盘通知

- (void)viewWillAppear:(BOOL)animated{
    //设置状态栏白色
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:NO];
    [self.textField becomeFirstResponder];
    self.textField.text = @"" ;
    //注册键盘将要弹出的提醒
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardWillShowNotification object:nil];
    //注册键盘将要消失时的提醒
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHide:) name:UIKeyboardWillHideNotification object:nil];
}
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    //移除一切编辑状态
    [self.view endEditing:YES];
    //移除注册的键盘将要显示的通知
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
//    //移除注册的键盘将要隐藏的通知
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
    _tableView.frame = CGRectMake(0, 64, ScreenWidth, ScreenHeight - 64);
}

方法里面拿到键盘高度

- (void)keyboardShow:(NSNotification *)notification {
    NSDictionary * info = [notification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    NSLog(@"%f__________", kbSize.height);
    _tableView.frame = CGRectMake(0, 64, ScreenWidth, ScreenHeight - 64 - kbSize.height);

//也可以使用UIView动画

}
- (void)keyboardHide:(NSNotification *)notification {
//    NSDictionary * info = [notification userInfo];
//    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
//    NSLog(@"%f__________", kbSize.height);
    _tableView.frame = CGRectMake(0, 64, ScreenWidth, ScreenHeight - 64);
}

© 著作权归作者所有

iShown
粉丝 17
博文 67
码字总数 46936
作品 0
浦东
高级程序员
私信 提问
keyboard 监听 改变高度

Swift: 1.注册通知 监听 NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardChangeFrame:", name: UIKeyboardDidChangeFrameNotification, object: nil); NSNotif......

夕阳_jhe
2015/12/08
93
0
杂(可能用到的零碎知识点)

UINavigationController当push的时候隐藏TabBar [controller setHidesBottomBarWhenPushed:YES]; 设置状态栏白色 要在info.plist添加View controller-based status bar appearance值为NO [[......

iShown
2016/02/23
57
0
TextField输入时被Keyboard挡住的解决办法

我们在TextField输入时经常会出现被虚拟键盘挡住的现象,下面是具体的解决办法 //要用到textfield的代理 @interface ScrollerViewController () { BOOL keyboardIsShown;//键盘是否出现 CGPo...

sqkkzsh
2012/11/15
0
0
iOS 键盘理解和拿到更改系统键盘

这些天项目中碰到一个恶心的bug是关于系统键盘的。因为这个项目为混编,所以在光标获取和键盘调用的时候就会特别有“喜感”(bug)。此前,我只是依稀感觉苹果的原生键盘我们是没有多大的操作...

gitzhengjianhua
2016/09/26
219
0
获取键盘升起后的高度

//监听键盘事件 NSNotificationCenter *center=[NSNotificationCenter defaultCenter]; [center addObserver:self selector:@selector(keyboard:) name:UIKeyboardWillChangeFrameNotificati......

wuc
2018/03/09
3
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis + Ehcache 二级缓存实例

二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕...

xiaolyuh
29分钟前
4
0
Spring源码学习(二)哎呦,按菜谱做菜与AbstractAutowireCapableBeanFactory.createBean流程差不多

记得跟老婆谈恋爱时,有一天心血来潮给老婆做饭,按照菜谱一步一步的做,结果差点把厨房烧了!!! 这事至今老婆还记得。 入口 上一篇说了,AbstractBeanFactory.getBean的主流程 ,今天来说下...

温安适
31分钟前
39
0
前端UI攻城狮 你们该抛弃jQuery了

你不再需要jQuery! Web工程师太依赖jQuery了,某种意义上说jQuery已经成了JavaScript的同义词。但是我们真的需要他么?或许我们应该反思一下什么时候才真的需要jQuery。 对我个人而言开始使...

前端老手
33分钟前
6
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
今天
6
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部