键盘弹出,navigation不隐藏



今天写了一个项目,就类似于微信的聊天页面,底部有输入框,顶部是系统的导航条,键盘弹出时,整个view会自动向上移动,导航也随之向上移动了,页面如下:


弹出键盘后



这不是我想要的效果,我想键盘弹出时,导航的位置不变,想了很多办法,也增加了系统的很多方法,例如:

self.navigationController.hidesBarsWhenKeyboardAppears = false;
self.navigationController.hidesBarsOnTap = false;
self.navigationController.hidesBarsOnSwipe = false;
self.navigationController.hidesBarsWhenVerticallyCompact = false;

但是都没有效果。在网上查了资料,得到了解决办法:在当前页面添加如下方法:

-(void)loadView
{
    UIScrollView *scrollview = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.view = scrollview;
}

loadView是系统的自带方法,并且在viewDidLoad之前被系统调用,该方法适合于加载自定义的view

一般来说,系统会调用是xib或者storyboard来加载view,如果两者都没有view,则调用父类的loadView方法加载view,但也只是一个简单的view。当键盘弹出的时候,navigation会自动向上移动,如果不想让navigation向上移动,就需要重写该方法,重新把

[[UIScreen mainScreen] bounds]的大小赋值该当前view,这样navigation就不会向上移动了。


添加了该方法之后的效果图:




当然,底部的输入框要在键盘弹出和消失的时候调整坐标,这里可以通过系统的键盘弹出和消失的通知来完成。

另外,如果使用了第三方的IQKeyBoardManager来管理键盘的弹出和消失,如果键盘弹出,navigation也移动,则也可以通过该loadView方法解决



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值