好的,所以我试图在我的视图中实现一个添加评论框。这是布局:移动导航控制器内的UIView不工作
我有一个UITabBarController
包含UINavigationController
其中我的UIViewController
推送到。视图布局由UITableView
和包含UITextView
和UIButton
的自定义UIView
组成。
我监视键盘的通知,这是我的代码有:
override func viewDidAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillAppear), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillDisappear), name: UIKeyboardWillHideNotification, object: nil)
}
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func keyboardWillAppear(notification: NSNotification){
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
var frame = inputPanel.frame
frame.origin.y = self.view.frame.height - (keyboardSize.height + inputPanel.frame.size.height)
inputPanel.frame = frame
}
}
func keyboardWillDisappear(notification: NSNotification){
var frame = inputPanel.frame
frame.origin.y = self.view.frame.height - inputPanel.frame.size.height
inputPanel.frame = frame
}
当键盘显示器,我已经设置断点并看到y坐标被更新,但我认为保持它是,隐藏在键盘后面。
一些笔记。我正在使用IQKeyboardManager
,并且已禁用此类的距离处理。我还使用PureLayout
来布置自定义UIView
内的控件。我没有为视图控制器中的自定义UIView
设置任何约束。该UITableView
和自定义UIView
的位置,如下图所示viewWillLayoutSubview
方法设置:
override func viewWillLayoutSubviews() {
let y = self.view.frame.height - 44
self.tableView.frame = CGRectMake(0, 0, self.view.frame.width, y)
self.inputPanel.frame = CGRectMake(0, y, self.view.frame.width, 44)
}
在另一方面,这是另一种观点认为正常使用我有不是UINavigationController
的孩子。
正在发生什么的屏幕截图:
与输入视图的视图:
当显示键盘:
任何帮助是很大的赞赏。
我试图加入这个无济于事。我没有使用任何故事板或xib,我的所有视图都以编程方式创建。当我切换到viewDidLayoutSubviews方法时,下面板甚至没有显示在视图中 – bhmahler
您可能想要发布tableView和inputPanel的初始化代码。你也确定keyboardWillAppear被召唤?它会进入你的if区块吗? – beyowulf
它肯定会被叫去。我已经遍历了那里的代码,看到origin.y值被改变了,但是视图不会向上移动。我开始认为这可能是与在自定义视图中使用PureLayout相关的问题。 – bhmahler