ios-利用键盘通知处理键盘出现时遮挡控件问题

-(void)viewDidLoad {
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

    //注册键盘显示通知
    [center addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

    //注册键盘隐藏通知
    [center addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

-(void)viewDidDisappear:(BOOL)animated
{

    //移除通知
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}

- (void) keyboardWillShow:(NSNotification *) notification{

    NSDictionary *info;
    CGSize kbSize;
    double kbheight;
    CGFloat Oversize;
    double duraction;

    info = notification.userInfo;
    kbSize = [[info objectForKey: UIKeyboardFrameEndUserInfoKey]
CGRectValue].size;
    kbheight = kbSize.height;

    Oversize = (self.view.frame.size.height - kbheight) - (textfield.frame.origin.y + textfield.frame.size.height+5);

    duraction =  [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

    if (Oversize < 0){
        [UIView animateWithDuration: duraction animations:^{
            self.view.frame = CGRectMake(0.0f, Oversize, self.view.frame.size.width, self.view.frame.size.height);
        }];
    }
}

-(void) keyboardWillHide:(NSNotification *) notification{

    double duraction = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

    [UIView animateWithDuration:duraction animations:^{
        self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    }];
}

原文地址:https://www.cnblogs.com/cccliche/p/9123854.html

时间: 2024-07-29 16:45:39

ios-利用键盘通知处理键盘出现时遮挡控件问题的相关文章

IOS: iPhone键盘通知与键盘定制

一.键盘通知 当文本View(如UITextField,UITextView,UIWebView内的输入框)进入编辑模式成为first responder时,系统会自动显示键盘.成为firstresponder可能由用户点击触发,也可向文本View发送becomeFirstResponder消息触发.当文本视图退出first responder时,键盘会消失.文本View退出first responder可能由用户点击键盘上的Done或Return键结束输入触发,也可向文本View发送resig

利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

原文:利用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer 注:ArcGIS样

iOS开发UI篇—Date Picker和UITool Bar控件简单介绍

iOS开发UI篇—Date Picker和UITool Bar控件简单介绍 一.Date Picker控件 1.简单介绍: Date Picker显示时间的控件 有默认宽高,不用设置数据源和代理 如何改成中文的? (1)查看当前系统是否为中文的,把模拟器改成是中文的 (2)属性,locale选择地区 如果默认显示不符合需求.时间有四种模式可以设置,在model中进行设置 时间可以自定义(custom). 设置最小时间和最大时间,超过就会自动回到最小时间. 最大的用途在于自定义键盘:弹出一个日期选

【Android自定义ViewGroup】不一样的轮子,巧用类变量解决冲突,像IOS那样简单的使用侧滑删除,一个控件搞定Android item侧滑删除菜单。

================================================================================== [1 序言] 侧滑删除的轮子网上有很多,最初在github上看过一个,还是ListView时代,那是一个自定义ListView 实现侧滑删除的,当初就觉得这种做法不是最佳,万一我项目里又同时有自定义ListView的需求,会增加复杂度. 写这篇文章之前又通过毒度搜了一下,排名前几的CSDN文章,都是通过自定义ListVIew和Vie

iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图

iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图 使用ios9中的开关.滑块控件 开关和滑块也是用于和用户进行交互的控件.本节将主要讲解这两种控件. ios9开关 开关控件常用来控制某个功能的开发状态,如蓝牙.GPS.WiFI信号等.如图2.29所示就是一个在WiFI中的开关.开关控件一般使用UISwitch来实现. 图2.29  开关 [示例2-10]以下将使用开发控件实现手电筒的功能.代码如下: import UIKit class ViewController: UIViewCon

JavaScript弹出式日历控件 无jquery

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" cont

IOS开发-键盘通知自定义键盘

利用键盘通知可实现效果如下: 1.UIKeyboardWillShowNotification: 当点击到可输入的控件上(一般是UITextField)时,键盘会自动显示,并且触发UIKeyboardWillShowNotification通知: UIKeyboardWillHideNotification: 当点击离开可输入的控件时,键盘会自动隐藏,并且触发UIKeyboardWillHideNotification通知. 所以,要注册这两种通知事件,在键盘显示/隐藏时,做出反应. 3.通知的

[iOS]技巧集锦:UITableView自定义Cell中的控件无法完全对齐Cell的左边界和右边界

这是个很诡异的问题,由于一些特殊需求,我的TableView的Cell的背景色是透明,其中的控件会有背景色,第一个控件和最后一个控件我都用IB自动设了约束,对齐Cell的左边界和右边界,但是自动约束很奇怪的是值都是-8(上下左右都是这个值).一开始并没在意因为显示出来是好的,但是不记得升级SDK到8.2还是8.3开始,左右就会多出空白来. 经过各种尝试,找到了解决方法.将左右的约束中item的related to margin(印象中是这么拼)取消勾选,值设为0就好了. 下班了等人,mac关了没

【iOS开发-88】事件传递原理解释哪个控件处理事件以及响应者链条的介绍

一.触摸事件传递原理 (1)大的方向是:从父控件传递给子控件. --父控件会先检查自己是否能接受事件的处理 --然后再看看触摸在不在自己的范围内 --如果在的话,就遍历子控件,看看有没有合适的子控件可以处理 --如果子控件都不适合,那么久父控件自己来处理. 还有个大的原则是,事件一般是从UIApplication >>> UIWindow >>> 各个控件 二.响应者链条 --找到这个控件后,看这个控件有没有实现touches的began.moved和ended事件.