好的,所以我試圖在我的視圖中實現一個添加評論框。這是佈局:移動導航控制器內的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