Размеры UITableViewWrapperView и UITableView отличаются в зависимости от автоматического размещения

Я строю чат. Кажется, все в порядке, но я столкнулся с некоторой «глючной» проблемой.

я получил 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

Ответы на вопрос(6)

Ваш ответ на вопрос