将显示在NotificationCenter键盘上获取发件人

时间:2017-01-19 03:45:44

标签: ios swift swift3 nsnotificationcenter

我目前正在使用一个滚动视图中包含多个文本字段和两个文本视图的应用。在键盘外观上,我可以更改滚动视图的内容插入,以便不隐藏字段。我遇到的问题是我只能在一个硬编码的字段上工作。我必须选择一个并为其制作动画。无论如何在keyboardWillShow上获取发件人字段或文本视图?目前,我正在使用它,一切正常,除非提到我必须选择一个字段detailsTxtView并为其设置动画。有什么帮助吗?

NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(notification:)),name: NSNotification.Name.UIKeyboardWillShow, object: nil)

func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
        let contentInsets: UIEdgeInsets? = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height, 0.0)
        scrollView.contentInset = contentInsets!
        scrollView.scrollIndicatorInsets = contentInsets!
        let goto = CGPoint(x: CGFloat(0.0), y: CGFloat(detailsTxtView.frame.origin.y + (keyboardSize.height + 40)))
        scrollView.setContentOffset(goto, animated: true)
    }

}

1 个答案:

答案 0 :(得分:2)

在iOS中,你可以找出谁拥有UIResponder.isFirstResponder的键盘焦点(注意所有UIViews都继承自UIResponder,因此它是每个视图的属性)。只需检查哪个字段有isFirstResponder = true并滚动到那个字段。如果您有很多字段,那么将所有字段放入插座集合非常有用,这样您就可以遍历它们并找出哪个字段是第一个应答器。