swift2.0中带有UIKeyboard的UIStackview

Posted

技术标签:

【中文标题】swift2.0中带有UIKeyboard的UIStackview【英文标题】:UIStackview with UIKeyboard in swift2.0 【发布时间】:2016-03-01 06:32:30 【问题描述】:

我正在使用带有 swift2.0 的 ios9。我的视图控制器处理两个文本字段和一些标签。这两个文本字段包含在堆栈视图中,标签也包含在另一个堆栈视图中。我已经设置了纵向和横向选项的通用应用程序,它的工作很好。但是当我点击文本字段时,当时键盘是向上的,键盘覆盖了文本字段,所以我看不到文本字段数据。如何解决这个问题以及如何在键盘向上和向下时管理所有约束?

override func viewWillAppear(animated: Bool) 

    super.viewWillAppear(animated)
    NSNotificationCenter.defaultCenter().addObserver(self, selector:("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object:nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector:("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)


override func viewWillDisappear(animated: Bool) 

    super.viewWillDisappear(animated)
    NSNotificationCenter.defaultCenter().removeObserver(self)


func keyboardWillShow(notification:NSNotification)

    print("keyboardWillShow")
    var info = notification.userInfo!
    let keyboardFrame:CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
    print(keyboardFrame)
    UIView.animateWithDuration(0.1, animations:  () -> Void in

    )


func keyboardWillHide(notification:NSNotification)

      print("keyboardWillHide")


【问题讨论】:

【参考方案1】:
func keyboardWillShow(sender: NSNotification)

    var info = sender.userInfo!
    let keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()


    UIView.animateWithDuration(0.1, animations:  () -> Void in

        self.view.center.y = self.view.center.y - keyboardFrame.size.height
    )



func keyboardWillHide(sender: NSNotification)

    var info = sender.userInfo!
    let keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()

    UIView.animateWithDuration(0.1, animations:  () -> Void in
        self.view.center.y = self.view.center.y + keyboardFrame.size.height
    )


【讨论】:

点击两个文本字段时它的移动视图向上。它不能正常工作。 你想要什么? @jasper 它将您的视图移动到上键盘,如果您只想将文本字段移动而不是整个视图,您可以设置您的文本字段中心而不是像 textfield.center.y 那样的视图,还可以通过标签检测您的文本字段。

以上是关于swift2.0中带有UIKeyboard的UIStackview的主要内容,如果未能解决你的问题,请参考以下文章

设备旋转后 UIKeyboard 高度不同

UIKeyboard 可见时如何更改 UITableView 的大小?

UIKeyBoard 在方向更改为横向时调整大小

为啥从自定义单元格调用时 UIkeyboard 不动画?

设置 UIKeyboard 附件视图时遇到问题

解雇 UIKeyboard 在 Objective-C 中不起作用