iOS键盘弹出的处理

原创 2015年11月17日 17:34:55

#pragma mark -view自动调整位置

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

    UIWindow *window = [[[UIApplication sharedApplication]delegate]window];

    [window setBackgroundColor:[UIColor whiteColor]];

    NSDictionary *dict = [notification userInfo];

    NSValue *value = [dict objectForKey:UIKeyboardFrameEndUserInfoKey];

    CGFloat keyboardHeight = value.CGRectValue.size.height;

    NSNumber *duration = [dict objectForKey:UIKeyboardAnimationDurationUserInfoKey];

    NSNumber *curve = [dict objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    if (self.nameText.isFirstResponder) {

    }else if(self.wayText.isFirstResponder){

         CGFloat  offsetTop = viewHeightCGRectGetMaxY(self.wayHolder.frame);

        if (offsetTop < keyboardHeight) {

            offsetTop = offsetTop - keyboardHeight;

            [UIView animateWithDuration:duration.floatValue animations:^{

                [UIView setAnimationBeginsFromCurrentState:YES];

                [UIView setAnimationCurve:curve.intValue];

                self.view.frame = CGRectMake(0, offsetTop, self.view.frame.size.width, self.view.frame.size.height);

            }];

        }

        

    }else if (self.integralText.isFirstResponder){

        CGFloat  offsetTop = viewHeightCGRectGetMaxY(self.integralHolder.frame);

        if (offsetTop < keyboardHeight) {

            offsetTop = offsetTop - keyboardHeight;

            [UIView animateWithDuration:duration.floatValue animations:^{

                [UIView setAnimationBeginsFromCurrentState:YES];

                [UIView setAnimationCurve:curve.intValue];

                self.view.frame = CGRectMake(0, offsetTop, self.view.frame.size.width, self.view.frame.size.height);

            }];

        }

        

    }else if (self.addressText.isFirstResponder){

        CGFloat  offsetTop = viewHeightCGRectGetMaxY(self.addressHolder.frame);

        if (offsetTop < keyboardHeight) {

            offsetTop = offsetTop - keyboardHeight;

            [UIView animateWithDuration:duration.floatValue animations:^{

                [UIView setAnimationBeginsFromCurrentState:YES];

                [UIView setAnimationCurve:curve.intValue];

                self.view.frame = CGRectMake(0, offsetTop, self.view.frame.size.width, self.view.frame.size.height);

            }];

        }

        

    }else if (self.declareTextView.isFirstResponder){

        CGFloat  offsetTop = -keyboardHeight+64;

        [UIView animateWithDuration:duration.floatValue animations:^{

            [UIView setAnimationBeginsFromCurrentState:YES];

            [UIView setAnimationCurve:curve.intValue];

            self.view.frame = CGRectMake(0, offsetTop, self.view.frame.size.width, self.view.frame.size.height);

        }];

    }

   }

#pragma mark -keyboardWillHide

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

    NSDictionary *dict = [notification userInfo];

    NSNumber *duration = [dict objectForKey:UIKeyboardAnimationDurationUserInfoKey];

    NSNumber *curve = [dict objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    [UIView animateWithDuration:duration.doubleValue animations:^{

        [UIView setAnimationCurve:curve.intValue];

        self.view.frame = CGRectMake(0, viewOriginY, self.view.frame.size.width, self.view.frame.size.height);

    }];

}

我是这样实现的  点击不同的控件 都会根据控件的具体位置计算view需要上移的位置 但是过程中出现了一个BUG,就是每次view上移之前都会先出现一个黑色的方块,哟过户体验非常的不好,我目前是这个解决的,通过设置window的背景色为白色,就是跟你view一样的颜色即可,这样看起来感觉不出有什么BUG   
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS中处理键盘弹出时,scrollview或者tableview的调整

http://www.cnblogs.com/dcty/archive/2012/03/11/2390403.html 以前的做法和这个比起来简直就是xxxx,今天看官方的参考库又学了一招~...

iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案

问题描述 iOS系统下,移动web页面,inpu获取焦点弹出系统虚拟键盘时,偶尔会出现挡住input的情况,尽管概率不大,但是十分影响用户体验。 问题重现 原始页面:页面中有head...
  • s3590024
  • s3590024
  • 2016年11月17日 17:48
  • 10534

ios 避免弹出键盘挡住屏幕

IOS中多个UITextField的键盘处理 在IOS开发中使用UITextField时常需要考虑的问题就是键盘的处理。有时候,弹出的键盘会将UITextField区域覆盖,影响用户...

IOS软键盘弹出和隐藏

原文链接:http://harttle.com/2014/05/25/input-method-ios.htmlIOS 软键盘的行为是直接由开发者控制的,操作系统只提供很少的管理策略。这造成了很麻烦的...
  • yangjvn
  • yangjvn
  • 2015年08月03日 10:42
  • 522

iOS-键盘弹出的类型

iOS 提供了10种键盘类型,在开发中,我们可以根据不同的需求,选择不同的键盘样式,例如,当我们只需要输入手机号码时,可以选择纯数字类型的键盘(NumbersAndPunctuation),当我们需要...
  • Mazy_ma
  • Mazy_ma
  • 2016年05月06日 17:27
  • 3038

[iOS]监控手机虚拟键盘弹出,消失的通知简单使用

项目中很多时候会遇到弹出的虚拟键盘,遮挡了输入框,或是其他的一些视图,这时候就需要根据键盘的弹出和消失调整视图的坐标,最好的方法就是用系统的通知机制来监控键盘的弹出和消失;...

ios---实现随着键盘弹出,响应的视图也随之上移

实现随着键盘弹出,响应的视图也随之上移 有时候你可能会遇到这样一个情况,如下图     这样弹出来的键盘就遮挡住了文本框,导致看不到文本框,也就看不到输入了什么 解决这个问题有...

iOS键盘弹出遮挡输入框问题

当键盘弹出时有可能遮挡住输入框,直接给出一个简单的解决方案 - (void)viewDidLoad { [super viewDidLoad]; // Do any additiona...

swift实现ios类似微信输入框跟随键盘弹出的效果

swift实现ios类似微信输入框跟随键盘弹出的效果
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS键盘弹出的处理
举报原因:
原因补充:

(最多只允许输入30个字)