iOS:键盘收起的一点小事

好吧,我承认今天是凑数的。
来,上图,看gif。

keyboardCollapse.gif

这里的问题是,键盘回收后,莫名的在AlertView显示完后,再次弹出收回了。
为啥会有这个问题呢?代码如下,这里用的是UIAlertView(iOS9已经不用了,不过为了兼容iOS7,我们还是会用到的)。

textField.resignFirstResponder()
let alertView = UIAlertView.init(title: "Alert View", message: "test keyboard collapse", delegate: self, cancelButtonTitle: "cancel")
alertView.show()

键盘收回动画时长:0.25秒。
而这里我们在取消textfield的第一响应者之后,立刻弹出AlertView。相当于打断了键盘回收的动画。结果就是在AlertView完成后,又执行一边键盘收起的动画。
解决办法:
获取收回时间长度,延时该时长后,再弹出AlertView。
PS:相同的设定,用UIAlertController就不会有问题,不知道什么原因。
修正后的代码:

textField.resignFirstResponder()        
//延时0.5秒
let time: NSTimeInterval = 0.5
let delay = dispatch_time(DISPATCH_TIME_NOW,
Int64(time * Double(NSEC_PER_SEC)))
dispatch_after(delay, dispatch_get_main_queue()) {
  let alertView = UIAlertView.init(title: "Alert View",
  message: "test keyboard collapse", delegate: self,
  cancelButtonTitle: "cancel")
alertView.show()
}

获取键盘收回动画时长的方法:
通过通知UIKeyboardWillHideNotification,来获得键盘回收的信息。

override func viewDidLoad() {
  super.viewDidLoad()
  NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardHideAction:", name: UIKeyboardWillHideNotification, object: nil)
}

func keyboardHideAction(noti: NSNotification) {
  let userInfo = noti.userInfo
  if let animationDuration = userInfo!["UIKeyboardAnimationDurationUserInfoKey"] {
    print("\(animationDuration)")
  }
}

键盘收回的几种方法:

  • 取消textfield第一响应者
  • 取消textfield所在的父视图的第一响应者
//取消textfield第一响应者
textField.resignFirstResponder()
//取消textfield所在的父视图的第一响应者
view.endEditing(true)
//通过UIApplication获取当前视图,然后取消第一响应者
UIApplication.sharedApplication().keyWindow?.endEditing(true)

彩蛋

运行时属性

我给Buuton添加了运行时属性,设定layer圆角。这里展示的是在XIB中设定运行时属性。

Demo地址见这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • { 11、核心动画 需要签协议,但是系统帮签好 一、CABasicAnimation 1、创建基础动画对象 CAB...
    CYC666阅读 5,506评论 2 4
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,373评论 4 61
  • 自当没有一个很好的渠道可以书写的时候,简书出现了。 这周开始听了些大提琴的舞曲,满足。周末想把单子整理下,做个新年...
    果下马阅读 1,832评论 0 1
  • 我决定不耽误你了!这句话,不知道已经通知我多少次了。我们彼此都没有错,只是不在合适而已,我是不是该放任你的离...
    张小贝happy阅读 2,383评论 0 0

友情链接更多精彩内容