2015-11-15 2 views
0

Я работаю над приложением чата и пытаюсь изменить свое представление, когда клавиатура входит. текстовое поле находится в нижней части моего представления, и я хочу, чтобы он поднимался, когда он щелкнут, и появится клавиатура. TextField находится в небольшом UIView, называемом dockView, в таблицеView, где отображается сообщение swill. Высота dockView имеет ограничение, на которое ссылается как dockViewHeight, равное 47 в начале. Поэтому я использую этот метод с UITextFieldDelegate:iOS: layoutIfNeeded, похоже, не работает при обновлении вида после изменения ограничений (Xcode 6.4, Swift 1.2)

func textFieldDidBeginEditing(textField: UITextField) { 
    println("did") 
    self.view.layoutIfNeeded() 
    UIView.animateWithDuration(0.5, animations: { 
     println("go \(self.dockViewHeight.constant)") 
     self.dockViewHeight.constant = 400 
     println("go \(self.dockViewHeight.constant)") 
     self.view.layoutIfNeeded() 
     println("go \(self.dockViewHeight.constant)") 
     }, completion: nil) 
} 

Метод называется, как и все выводится на консоль. Контрсилы также обновляются, как вы можете увидеть ее в журналах:

did 
go 47.0 
go 400.0 
go 400.0 

Однако, нет никаких изменений на экране и высоту dockView остается тем же самым. Любая идея о том, почему это происходит?

Спасибо!

ответ

0

Вы должны установить ограничение вне блока анимации и только вызвать layoutIfNeeded внутри блока.

 Смежные вопросы

  • Нет связанных вопросов^_^