ScrollView上键盘遮挡问题

之前做的项目中有过注册和修改个人信息的页面,因为输入的框比较多,如果要适配较小的屏幕时(比如说,3.5寸屏),不用滚动视图的话没有办法可以将所有输入框都显示在屏幕上。所以把输入框都放到了ScrollView上面(我用xib来拖入控件,而关于ScrollView的适配问题是比较麻烦的,自行百度),这里也会有键盘的遮挡问题。

关于ScrollView的键盘遮挡问题,一开始话了很多时间去改变它的Frame的高度,但是结果不如人意。后来在网上看了很多资料,发现一个简单有效的方法,特此记录下来,供以后查阅。

首先需要注册好键盘通知:

[[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 *)notification {
    //获取键盘高度
    CGFloat height = [self fetchKeyboardHeightWithNotification:notification];

    //设置contentInset的值(一开始的默认值为(0,0,0,0))
    UIEdgeInsets e = UIEdgeInsetsMake(0, 0, height, 0);
    [self.bgScrollView setContentInset:e];

    //这个可以设置ScrollView上键盘的隐藏方式
    //_bgScrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
}

//隐藏键盘
- (void)keyboardWillHide:(NSNotification *)notification {
     //将contentInset的值设回原来的默认值
    UIEdgeInsets e = UIEdgeInsetsMake(0, 0, 0, 0);
    [self.bgScrollView setContentInset:e];

    NSLog(@"scrollView.height = %f", self.bgScrollView.contentSize.height);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,327评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,204评论 4 61
  • 一_。 二零-七年七月八日,吉林省造船业骨干企业大安造船厂,一改往日的锤声铿锵电弧闪耀的繁忙景象。大门上方悬挂起...
    宁宁姥爷阅读 4,001评论 1 2
  • 移动APP安全事件泄漏的信息主要是以用户的姓名、地址、账号、密码、手机号等信息为主,特别是尤其金融理财类APP。鼎...
    必安全AppBeSafe阅读 2,548评论 0 2
  • 你是否为男/女朋友感到困惑?你是否想过和TA分手 ?其实有时候并不只是TA错了 。换个角度想想,又是说不定是你错了...
    当年的话阅读 663评论 0 0