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,今天看官方的参考库又学了一招~...
  • xuchaovip
  • xuchaovip
  • 2014年10月08日 18:35
  • 1016

弹出键盘 tableview定位到编辑位置

- (void)keyboardWillShow:(NSNotification *)notification {          /*      Reduce the size ...
  • dabin12345
  • dabin12345
  • 2016年07月27日 10:33
  • 553

iOS:根据键盘的弹出隐藏自动调整View的位置

原创:http://www.cnphp6.com/archives/67220 首先需要监听键盘通知,这里我们监听UIKeyboardWillChangeFrameNotification,只要...
  • u012519665
  • u012519665
  • 2016年01月29日 14:07
  • 954

iOS-键盘弹出的类型

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

iOS 中获得键盘的弹出和隐藏

1、首先在.h 中定义属性: keyBoardlsVisible 键盘的状态,弹出其值为 YES 隐藏为NO,可通过状态的值进行资金的操作 @property(nonatomic, assign)...
  • Boyqicheng
  • Boyqicheng
  • 2015年10月02日 22:24
  • 2839

iOS键盘弹出与退回和文本框的完美适配

如上图所示,需要编辑用户的信息,键盘需要根据所输入的行来合理的显示键盘位置 ①,文本框添加监听  //添加监听   [self addRegisterText:leftTitleRight...
  • qq_16231975
  • qq_16231975
  • 2016年02月29日 16:56
  • 626

ios 获取系统键盘弹出的动画速度

- (void)keyboardWillShow:(NSNotification *)notification {     NSDictionary *userInfo = [notificatio...
  • liuhunhun
  • liuhunhun
  • 2012年10月29日 16:22
  • 1150

IOS开发:键盘弹出调用的方法顺序

以UITextField的键盘弹出顺序为例:先是[text
  • xuanhui1991
  • xuanhui1991
  • 2014年10月18日 09:06
  • 1232

iOS判断键盘弹出和隐藏

转自:http://www.ithao123.cn/content-9982085.html 1、首先在.h 中定义属性: keyBoardlsVisible 键盘的状态,键盘弹出其值为 YES ,键...
  • wangfeng2500
  • wangfeng2500
  • 2015年10月13日 11:55
  • 4689

iOS UITextField 获得焦点后,阻止弹出键盘事件

iOS 时间选择器用UITextField记录选择的时间,有个问题就是,如何阻止默认的加载软键盘时间。我在网上找了好久也没有这方面的解决方案。后来我看到一片关于用iOS通告技术自定义切入想要执行的方法...
  • sky_2016
  • sky_2016
  • 2014年12月26日 16:22
  • 2861
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS键盘弹出的处理
举报原因:
原因补充:

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