Я создаю чат. Все выглядит вполне нормально, но я столкнулся с проблемой "багги".
Я получил UIViewController с панелью UITextView для ввода сообщения и UITableView.
Они находятся в этом ограничении: "V:|-(64)-[chatTable][sendMessageBar]-(keyboard)-|"
.
Когда клавиатура не выключена - константа этого ограничения равна 0
. и после того, как клавиатура выключена - я увеличиваю константу до высоты клавиатуры.
когда клавиатура не выключена:
self.table.contentSize = (375.0,78.5)
self.table.bounds = (0.0,-490.0,375.0,568.5)
self.table.frame = (0.0,64.0,375.0,568.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,0.0,375.0,568.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,0.0,375.0,568.5)
и когда клавиатура выходит:
self.table.contentSize = (375.0,78.5)
self.table.bounds = (0.0,-274.0,375.0,352.5
self.table.frame = (0.0,64.0,375.0,352.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,-137.5,375.0,137.5)
self.table.subviews[0].frame (UITableViewWrapperView) = (0.0,0.0,375.0,137.5)
Таким образом, UITableViewWrapperView, после увеличения констант ограничений, отличается по размеру его супервизором - UITableView. Есть ли способ исправить это? Я бы предположил, что UITableViewWrapperView
изменит свой фрейм и границы в соответствии с UITableView
, но это не так.
Любые идеи, где проблема или как я могу обойти это?
ДОБАВЛЕНИЕ:
После еще нескольких исследований - кажется, что это происходит где-то между viewWillLayoutSubviews
и viewDidLayoutSubviews
. Это довольно странно:
override func viewWillLayoutSubviews() {
println("WrapperView Frame :991: \(self.table.subviews[0].frame)") \\ WrapperView Frame :991: (0.0,0.0,375.0,568.5)
super.viewWillLayoutSubviews()
println("WrapperView Frame :992: \(self.table.subviews[0].frame)") \\ WrapperView Frame :992: (0.0,0.0,375.0,568.5)
}
override func viewDidLayoutSubviews() {
println("WrapperView Frame :6: \(self.table.subviews[0].frame)") \\ WrapperView Frame :6: (0.0,-137.5,375.0,137.5)
super.viewDidLayoutSubviews()
println(">> viewDidLayoutSubviews")
}
Итак, кажется, что что-то происходит там, что беспорядок UITableViewWrapperView