美文网首页
ScrollView上键盘遮挡问题

ScrollView上键盘遮挡问题

作者: langlangago | 来源:发表于2016-02-26 11:30 被阅读522次

    之前做的项目中有过注册和修改个人信息的页面,因为输入的框比较多,如果要适配较小的屏幕时(比如说,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);
    }

    相关文章

      网友评论

          本文标题:ScrollView上键盘遮挡问题

          本文链接:https://www.haomeiwen.com/subject/okqwkttx.html