i have developed on im app. when the user taps the text field the keyboard pops up and the table view containing the messages moves up but the top of the table view is un viewable as it is off the screen. it is also having the undesired effect of turning the screen black when the user moves the keyboard suggestions up or down
override func viewWillAppear(animated:Bool) {
super.viewWillAppear(animated)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
}
func keyboardWillShow(notification: NSNotification) {
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
kbHeight = keyboardSize.height
self.animateTextField(true)
}
}
}
func keyboardWillHide(notification: NSNotification) {
self.animateTextField(false)
}
func animateTextField(up: Bool) {
let movement = (up ? -kbHeight : kbHeight)
UIView.animateWithDuration(0.2, animations: {
self.view.frame = CGRectOffset(self.view.frame, 0, movement)
})
}
How can i control the display of the tableview, text field and keyboard?
Edit
desired behaviour. from the start
- i would like the view keyboard to be collapsed (working fine)
- table view showing the messages (working fine)
- and ta text field at the bottom of the screen (working fine)
when Text field is tapped
- keyboard pops up (working)
- text field moves to top of keyboard (working)
- table view displays in remaining space above text field (not working, it is above textfield but half is spilling of the screen to the top)
other bug
- the screen is going black when show/hide the autocomplete words on top of the keyboard