美文网首页
iOS:键盘收起的一点小事

iOS:键盘收起的一点小事

作者: 取水 | 来源:发表于2016-03-27 14:11 被阅读728次

好吧,我承认今天是凑数的。
来,上图,看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地址见这里

相关文章

  • iOS:键盘收起的一点小事

    好吧,我承认今天是凑数的。来,上图,看gif。 这里的问题是,键盘回收后,莫名的在AlertView显示完后,再次...

  • iOS 如何在键盘上方增加“收起“键盘按钮

    iOS 如何在键盘上方增加“收起“键盘按钮:

  • iOS键盘弹出消失监听

    iOS 监听键盘的弹出,收起,并且拿到键盘的高度 //监听当键盘将要出现时 [[NSNotificationCen...

  • iOS 收起键盘

    //方法1; [[[UIApplication sharedApplication] keyWindow] end...

  • iOS收起键盘

    //第1种方法 view: 控制器的view [self.view endEditing:YES]; //第2种方...

  • iOS收起键盘

    在开发过程中,为了实现点击屏幕其它位置收起键盘的目的,我们使用过许多的方法。如果是在UIViewControlle...

  • iOS 收起键盘

    需求:在iOS生有的时间需要全局弹出框,但是弹出框弹出的时间有键盘,这个时间需要点击其他区域收起键盘。 三种方法:...

  • iOS开发-关闭/收起键盘方法总结

    前言:作为IOS开发人员,需要经常和表单打交道。因此我对收起键盘的方法作了下总结,IOS收起键盘有三种方法(如果有...

  • iOS开发-关闭/收起键盘方法总结

    前言:作为IOS开发人员,需要经常和表单打交道。因此我对收起键盘的方法作了下总结,IOS收起键盘有三种方法(如果有...

  • 前端开发小技巧

    1.ios的键盘弹出和收起事件 2.android的键盘弹出和收起事件 3.pre标签 HTML 元素表示预定...

网友评论

      本文标题:iOS:键盘收起的一点小事

      本文链接:https://www.haomeiwen.com/subject/vexjlttx.html