2015-11-15 1 views
0

Je travaille sur une application de chat et j'essaie d'obtenir une vue changeante lorsque le clavier entre. textfield est au bas de ma vue, et je veux qu'il monte quand on clique dessus et que le clavier apparaît. Le textField est dans un petit UIView appelé dockView sous un tableauView où le message swill être affiché. La hauteur de dockView a une contrainte référencée comme dockViewHeight qui est égale à 47 au début. Donc j'utilise cette méthode avec UITextFieldDelegate:iOS: layoutIfNeeded ne semble pas fonctionner dans la vue de mise à jour suite à la modification des contraintes (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) 
} 

La méthode est appelée, comme tout est imprimé à la console. Les contraintes sont également mises à jour que vous pouvez la voir dans les journaux:

did 
go 47.0 
go 400.0 
go 400.0 

Cependant, il n'y a pas de changement sur l'écran et la hauteur de la dockView reste le même. Une idée de pourquoi cela se passe-t-il?

Merci!

Répondre

0

Vous devez définir votre contrainte en dehors du bloc d'animation et appeler uniquement layoutIfNeeded dans le bloc.