【发布时间】:2018-11-13 16:20:38
【问题描述】:
我有这个CommentViewController。它嵌入在容器视图中。在这个CommentViewController 中,有一个UITableView 用于显示cmets,UIView 包含一个UITextField 和一个UIButton。包含这两个对象的UIView 通过自动布局在底部、右侧和左侧固定到安全区域,顶部到UITableView。
现在,当用户点击UITextField 时,整个视图(包括按钮和文本字段在内)应该被提升到键盘上方。我正在尝试为视图的底部约束设置动画,但它不起作用。
这是代码:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
@objc func keyboardWillShow(_ notification: NSNotification) {
let keyboardFrame = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue
UIView.animate(withDuration: 0.3) {
self.textFieldViewBottomConstraint.constant = keyboardFrame!.height
}
}
这是故事板:
这是点击文本字段后的结果。
PS:当我点击UITextField 时,控制台会显示以下消息:
2018-06-04 14:11:52.471848+0300 AppName[91846:8829073] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /Users/d/Library/Developer/CoreSimulator/Devices/C89347A2-1598-4F31-BBAC-1F98F970A248/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2018-06-04 14:11:52.472588+0300 Shippers[91846:8829073] [MC] Reading from private effective user settings.
【问题讨论】:
-
如果您只需要功能。看看这个,github.com/hackiftekhar/IQKeyboardManager
-
对于 [MC] 消息,它是无关的,您可以忽略这些:stackoverflow.com/questions/39588500/…
标签: swift uiview nslayoutconstraint uiviewanimation nsnotificationcenter