弹出键盘时UITableview内容跟着上移,不至于被键盘挡住,导致UITableView内容显示不完

//首先注册通知,监听键盘:

- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillAppear:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillDisAppear:) name:UIKeyboardWillHideNotification object:nil];
}

//在键盘弹出和收起的方法中做以下操作

- (void)keyboardWillAppear:(NSNotification *)noti {
    NSDictionary *userInfo = noti.userInfo;
    //获取键盘的frame
    CGRect keyboardFrame = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    //获取键盘弹出的动画时间
    NSTimeInterval animationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey ] doubleValue];
    //让输入框跟随变化
    [UIView animateWithDuration:animationDuration animations:^{
       [_ctv mas_updateConstraints:^(MASConstraintMaker *make) {
           make.bottom.equalTo(@(-keyboardFrame.size.height));
       }];
    }];
    //设置tableview的contentInset属性,改变tableview的显示范围
    _tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardFrame.size.height, 0);
    _tableView.scrollEnabled = YES;
}

- (void)keyboardWillDisAppear:(NSNotification *)noti {
    NSDictionary *userInfo = noti.userInfo;
    NSTimeInterval animationDuration = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey ] doubleValue];
    [UIView animateWithDuration:animationDuration animations:^{
        [_ctv mas_updateConstraints:^(MASConstraintMaker *make) {
            make.bottom.equalTo(@0);
            make.height.equalTo(@52);
        }];
    }];
    UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    _tableView.contentInset = contentInsets;
}
时间: 2024-10-05 01:42:46

弹出键盘时UITableview内容跟着上移,不至于被键盘挡住,导致UITableView内容显示不完的相关文章

解决IOS safari在input focus弹出输入法时不支持position fixed的问题

该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position:fixed的支持不是很好(在IOS5之前甚至还不支持position:fixed).我遇到的其中一个问题就是,在iOS6+环境下,input focus弹出输入法的时候,设置了position fixed的input框浮在页面上了,而不是吸附在软键盘上.效果如图(图片来源于网上): 而Androi

JavaScript:关闭弹出窗口时刷新父窗口

JavaScript:关闭弹出窗口时刷新父窗口 2010-08-13 09:25:29|  分类: 代码示例 |举报 |字号 订阅 说明: 关闭弹出窗口时刷新父窗口也可以说是关闭子窗口时自动刷新父窗口中的信息,即用户通过window对象的open()方法打开一个新窗口(子窗口),当用 户在该子窗口中进行了数据库操作(如数据添加.修改和删除等)之后,关闭子窗口时,系统会自动刷新父窗口来实时更新信息; 思路和技术: 主要应用window.open()语句打开新窗口,并在新窗口中应用opener属性,

javascript关闭弹出窗口时刷新父窗口和居中显示弹出窗

居中显示用到了moveTO()方法: 关闭弹出窗时刷新父窗口用到了window.opener方法: 父窗口代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="弹出窗口.aspx.cs" Inherits="弹出窗口" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti

Android学习—解决界面弹出输入框时Tabhost上移的问题

在一个Tabhost页签界面,里面有多个EditText可以输入,但是每次文本框获得焦点弹出系统键盘时,位于底部的Tab被顶到中间去了,而且还会导致输入无效: 对于这种问题,可以通过下面的设置解决: 修改AndroidManifest.xml文件,在Tabhost所在的Activity中加入:android:windowSoftInputMode="adjustPan|stateVisible" 如下: <activity android:name="com.yag.U

实现移动端弹出层弹出的时候页面不能滑动,关闭弹出层时页面恢复滑动

思路是:显示弹层时,禁用触摸事件 在你显示弹出框的时候:添加: function ShowDiv() { window.ontouchmove = function(e) { e.preventDefault && e.preventDefault(); e.returnValue = false; e.stopPropagation && e.stopPropagation(); return false; } } 在关闭弹层时,添加: function CloseDiv

[bug修复方案分享]Android4.0以上弹出Notification时图标显示不正常

1. 现象 在Android4.0以上系统中,弹出通知栏消息时图标显示不全,如下图: v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·'"

移动端input获取焦点弹出输入框时影响fixed布局的问题

最近在做移动端项目的时候遇到的一个问题,在点击input获取焦点弹出输入框进行输入后,再次点击input输入框时,意外的事情发生了, 页面突然跳转到确定按钮跳转的页面了,刚开始以为是点击穿透导致的,朝着这个方向一直没有等到解决... 经过反复研究,发现第二次点击input 时,上面有一个隐形的按钮,这是怎么回事,确定按钮怎么就跑到上面去了呢,原来是由于最外层 使用了fixed布局,而第一次点击input获取焦点时,移动端默认弹出的输入框会将fixed布局的元素顶上去. 解决办法: 1.如果使用的

ios手机弹出层上表单的操作,收起键盘焦点错乱的问题

问题 今天遇到了ios手机下 弹出层上form表单 当收起键盘后,焦点错乱,无法再操作的问题 问题原因 Ios收起键盘以后,会对页面进行滚动操作,只需要 window.scroll(0,0)来重置一下就好. 解决办法 function device() { const u = navigator.userAgent; const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 const i

系统软键盘&quot;&gt;Android在外接物理键盘时,如何强制调用系统软键盘?

第一次写,写的不好请见谅 物理键盘映射过程: 手机/system/usr/keylayout/*.kl :内核将keyCode映射成有含义的字符串KeycodeLabels.h : framework 将字符串映射成keyEvent的keyCodeframeworks/-/res/values/attrs.xml - 主要部分:android.jar 一.问题描述:当平板连接上蓝牙扫描枪(外接物理键盘)时候,不能弹出软键盘输入,需要打开系统的输入法选择界面关闭硬件物理键盘后才能调用弹出系统软键盘