iOS键盘弹出动画问题

今天在写键盘弹出时遇见一个问题。监听UIKeyboardWillShowNotification通知让Label做一个移动的动画,指定duration为15,但动画实际完成时间却与键盘弹出时间一致。

- (void)keyboardWillShow:(NSNotification *)notification {[UIView animateWithDuration:15 animations:^{CGRect frame = self.moveLabel.frame;frame.origin.y = 300;self.moveLabel.frame = frame;}];
}复制代码

如果是在UIKeyboardDidShowNotification中做动画,动画完成时间则为指定时间。

- (void)keyboardDidShow:(NSNotification *)notification {[UIView animateWithDuration:5 animations:^{CGRect frame = self.moveLabel.frame;frame.origin.y = 300;self.moveLabel.frame = frame;}];
}
复制代码

这两者的区别一个是键盘将要弹出,一个是键盘已经弹出。这跟我的动画有什么关系呀?

把UIKeyboardWillShowNotification通知方法中的动画去掉,发现依旧有动画效果。诶~好神奇~肿么回事,难道keyboardWillShow调用时就处于一个Animation里(我猜的)?

- (void)keyboardWillShow:(NSNotification *)notification {
//    [UIView animateWithDuration:15 animations:^{CGRect frame = self.moveLabel.frame;frame.origin.y = 300;self.moveLabel.frame = frame;
//    }];
}
复制代码

搜了好多地方都没有找到keyboardWillShow的原理,好尴尬~ 为了验证自己的猜测,写了一个嵌套动画,用来验证嵌套的动画执行时间为多少。

- (IBAction)moveAction:(id)sender {self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeText) userInfo:nil repeats:YES];[UIView animateWithDuration:2 animations:^{ // 外层动画时间CGRect frame = self.moveLabel.frame;frame.origin.y = 100;                   // 外层动画坐标self.moveLabel.frame = frame;[UIView animateWithDuration:10 animations:^{    // 内层动画时间CGRect frame = self.moveLabel.frame;frame.origin.y = 400;                       // 内层动画坐标self.moveLabel.frame = frame;}];}];
}- (void)changeText {self.timeCount++;self.moveLabel.text = [NSString stringWithFormat:@"Time = %ld,\nFrame.origin.y = %.0f", (long)self.timeCount, self.moveLabel.frame.origin.y];if (self.timeCount > 12) {[self.timer invalidate];self.timer = nil;}
}
复制代码

最终效果为:动画时间取外层动画时间值,结果取内层动画坐标值。 所以我那个猜测还是有道理的… 希望有大神指点下keyboardWillShow的原理

更新

受到大神评论的指点,又多get到了一个知识点。
通过设置动画的options使动画忽略外层动画嵌套效果,只关心自己的动画参数。options参照www.jianshu.com/p/3723c403a…

- (void)keyboardWillShow:(NSNotification *)notification {[UIView animateWithDuration:15 delay:0 options:UIViewAnimationOptionOverrideInheritedDuration | UIViewAnimationOptionOverrideInheritedCurve animations:^{CGRect frame = self.moveLabel.frame;frame.origin.y = 300;self.moveLabel.frame = frame;} completion:nil];
}
复制代码

iOS键盘弹出时动画时长失效问题相关推荐

  1. 成品app直播源码,iOS键盘弹出遮挡输入框

    成品app直播源码,iOS键盘弹出遮挡输入框解决的相关代码 self.phoneInput = [UITextField new];self.phoneInput.placeholder = @&qu ...

  2. ios 键盘弹出input输入框被遮挡 键盘隐藏时页面无法回弹解决方案

    ios 微信键盘弹出input输入框被遮挡 键盘隐藏时页面无法回弹解决方案 问题:测试发现ios微信端浏览器中,键盘弹出后,输入框被软键盘遮挡,input失焦后,因软键盘顶起的页面没有回弹到原来位置, ...

  3. iOS键盘弹出通知后加入动画

    首先我们要注册键盘弹出和弹入的通知 [[NSNotificationCenter defaultCenter] addObserver:self                             ...

  4. Android11键盘弹出动画,(2016-11-04完美解决)移动端iOS第三方输入法遮挡底部input及android键盘回落后留白问题...

    问题概述 问题1:H5 web 移动端 输入框, 键盘唤起后fixed定位好的元素跟随页面滚动了起来- fixed属性失效了!满屏任性横飞, 如下图: 问题2:有几后来含些在到气时按式近篇来又的方浏消 ...

  5. Android页面监听虚拟键盘弹出、收起

    js 移动端关于页面布局,如果底部有 position: fixed 的盒子, 又有input,当软键盘弹出收起都会影响页面布局. 如图: 页面这时候Android可以监听resize事件,代码如下, ...

  6. 小程序中点击input控件键盘弹出时placeholder文字上移

    最近做的一个小程序项目中,出现了点击input控件键盘弹出时placeholder文字上移,刚开始以为是软键盘弹出布局上移问题是传说中典型的fixed 软键盘顶起问题,因此采纳了网上搜到的" ...

  7. Android 软键盘弹出时布局内指定内容上移实现及问题解决

    Android 软键盘弹出时布局内指定内容上移实现及问题解决 参考文章: (1)Android 软键盘弹出时布局内指定内容上移实现及问题解决 (2)https://www.cnblogs.com/as ...

  8. Android 软键盘弹出时把布局顶上去,控件乱套解决方法

    Android 软键盘弹出时把布局顶上去,控件乱套解决方法 参考文章: (1)Android 软键盘弹出时把布局顶上去,控件乱套解决方法 (2)https://www.cnblogs.com/zhuj ...

  9. 软键盘弹出时popwindow_【示例】解决软键盘弹出时底部元素上浮的问题

    问题描述 在html5plus环境下,当html中存在固定在底部的元素时,此时弹出软键盘的话,底部的元素也会被弹上来. 出现这种情况时,看起来页面布局好像乱掉了,这样给用户的体验不太理想. 问题分析 ...

最新文章

  1. Java 类和对象的内存分配机制
  2. iOS开发-NSString去掉所有换行及空格
  3. 我的Android进阶之旅------gt;Android字符串资源中的单引號问题error: Apostrophe not preceded by 的解决的方法...
  4. 使用C语言中的宏来定位出错信息
  5. Android-广播接收者简介
  6. 面试题 - 两个页面间如何传递数据
  7. python 抽样函数_python中resample函数实现重采样和降采样代码
  8. Springboot配置fastjson开发
  9. hive开启kerberos-beeline连接
  10. MRO的计算(C3算法及应用)
  11. 用激光把谷歌的标志投射到月球是否可行?
  12. 使用C语言快速制作一个视频播放器
  13. SQL查询语句大全集锦
  14. Python基础之键盘操作
  15. [hdu3873] Invade the Mars
  16. 指针的类型(即指针本身的类型)和指针所指向的类型是两个概念
  17. excel阅读器Android,Excel阅读器
  18. 马尔科夫随机场和马尔科夫链
  19. 【bzoj3238】差异 后缀自动机
  20. 教师如何创建在线查分系统

热门文章

  1. Java 数字用二进制表示,以及原码,反码,补码、负数的二进制表示
  2. 如何在TortoiseGit中使用ssh-keygen生成的key
  3. html5+开发移动app
  4. JNI的native代码中打印日志到eclipse的logcat中
  5. 【Android基础】序列化 Serializable vs Parcelable
  6. RxSwift UI控件扩展
  7. 复制链接到safari浏览器打开_JS实现复制到剪贴板(兼容FF/Chrome/Safari所有浏览器)...
  8. 在linux下查询日志
  9. JS数组去重的6种算法实现
  10. hadoop端口号列表