keyboardWillShow() should be private