versiones sale novedades lanzamiento fecha descargar cuando ios keyboard whatsapp

sale - ios 12 novedades



iOS Teclado muestra el manejo de eventos (2)

Estoy trabajando en una aplicación de chat en la que tengo una vista de texto (no de texto) y cuando hago clic en él, el teclado debe mostrar y todo debe moverse hacia arriba.

Hasta ahora, he logrado cambiar el marco de la vista de tabla y la vista de texto hacia arriba y mostrar el teclado usando el siguiente código.

- (void)keyboardWasShown:(NSNotification *)notification { NSDictionary* info = [notification userInfo]; keyboardSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; CGPoint contentViewOrigin = self.contentView.frame.origin; CGFloat contentViewHeight = self.contentView.frame.size.height; CGRect visibleRect = self.view.frame; visibleRect.size.height -= keyboardSize.height; BOOL up = CGRectContainsPoint(visibleRect, contentViewOrigin); if (!up){ self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,self.tableView.frame.origin.y,self.tableView.frame.size.width,280.0f); self.contentView.frame = CGRectOffset(self.contentView.frame, 0, 0 - keyboardSize.height); if([self.tableView numberOfRowsInSection:0]!=0) { NSIndexPath* ip = [NSIndexPath indexPathForRow:[self.tableView numberOfRowsInSection:0]-1 inSection:0]; [self.tableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:UITableViewRowAnimationLeft]; } } } - (void)keyboardWillBeHidden:(NSNotification *)notification { self.contentView.frame = originalContentView; self.tableView.frame = originalTable; } - (void)registerForKeyboardNotifications { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil]; } - (void)deregisterFromKeyboardNotifications { [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; }

Pero cuando vi cómo lo hace, el mío parecía un truco. El teclado de Whatsapp se mueve junto con todos los elementos mientras que el mío funciona así: Primero se muestra el teclado, se envía una notificación a la aplicación, se recibe una notificación, el código calcula la altura del teclado y sube los elementos según la altura.

He buscado y encontrado la solución que he implementado.

¿Alguien puede ayudar?



Uso mucho este truco en mis aplicaciones. Desea escuchar UIKeyboardWillShowNotification y UIKeyboardWillHideNotification . La mejor manera de manejar la animación, en mi opinión, es usar el autolayout. Cuando llama a [self.view layout IfNeeded]; sus puntos de vista se moverán junto con la animación del teclado. No se necesita bloque de animación.

¡He creado un proyecto simple para que cualquiera intente y vea cómo funciona!

- (void)addKeyboardNotificationsObserver { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; } - (void)handleKeyboardWillShow:(NSNotification *)paramNotification { NSDictionary* info = [paramNotification userInfo]; //when switching languages keyboard might change its height (emoji keyboard is higher than most keyboards). //You can get both sizes of the previous keyboard and the new one from info dictionary. // size of the keyb that is about to disappear CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; // size of the keyb that is about to appear CGSize kbSizeNew = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size; //make adjustments to constraints here... //and here where''s magick happen! [self.view layoutIfNeeded]; } - (void)handleKeyboardWillHide:(NSNotification *)paramNotification { //adjust constraints [self.view layoutIfNeeded]; }