vibrar texto teclado tamaño predictivo palabras eliminar diccionario descargar color cambiar aumentar iphone animation keyboard

texto - ¿Cuál es la tasa de animación de teclado predeterminada del iPhone?



texto predictivo whatsapp (7)

Dado que este es el primer hit de Google, me gustaría señalar que con la codificación rígida 0.3 significará que su vista se animará incorrectamente cuando los usuarios internacionales (por ejemplo, el japonés) cambien entre teclados de diferentes tamaños (cuando esa acción deba ser instantánea) .

Utilice siempre el valor UIKeyboardAnimationDurationUserInfoKey del diccionario userInfo de la notificación : se establece en 0 cuando el usuario está hojeando teclados.

Hace un tiempo recuerdo haber visto una constante de algún tipo que definía la tasa de animación del Teclado en el iPhone y no puedo recordar dónde la vi ... ¿alguna idea?


En Swift su código se verá así:

let keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue.size let animationDuration = ((userInfo[UIKeyboardAnimationDurationUserInfoKey]) as! NSNumber).floatValue let animationOptions = ((userInfo[UIKeyboardAnimationCurveUserInfoKey]) as! NSNumber).unsignedLongValue UIView.animateWithDuration(NSTimeInterval(animationDuration), delay: 0, options: UIViewAnimationOptions(rawValue: animationOptions), animations: { () -> Void in self.view.frame.origin.y += keyboardSize.height }, completion: nil)


Para agregar un poco más a lo que Shaggy Frog escribió. La implementación completa sería algo así como:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardMovement:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardMovement:) name:UIKeyboardWillHideNotification object:nil]; -(void)keyboardMovement:(NSNotification *)notification{ if (_numericKeyboardShowing == false){ [UIView animateWithDuration:[self keyboardAnimationDurationForNotification:notification] delay:0 options:UIViewAnimationCurveEaseInOut animations:^ { self.bottomContainerView.center = CGPointMake(self.bottomContainerView.center.x, (self.bottomContainerView.center.y - 218)); } completion:NULL]; _numericKeyboardShowing = true; } else{ [UIView animateWithDuration:[self keyboardAnimationDurationForNotification:notification] delay:0 options:UIViewAnimationCurveLinear animations:^ { self.bottomContainerView.center = CGPointMake(self.bottomContainerView.center.x, (self.bottomContainerView.center.y + 218)); } completion:NULL]; _numericKeyboardShowing = false; } - (NSTimeInterval)keyboardAnimationDurationForNotification:(NSNotification *)notification { NSDictionary *info = [notification userInfo]; NSValue* value = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval duration = 0; [value getValue:&duration]; return duration; }


Swift 4 - trabajado para mí:

if let duration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double { UIView.animate(withDuration: duration, animations: { self.view.layoutIfNeeded() }) }

En modo de depuración mi duration fue 3.499999


UIKeyboardAnimationDurationUserInfoKey La clave para un objeto NSValue que contiene un doble que identifica la duración de la animación en segundos.


UIKeyboardAnimationDurationUserInfoKey ahora es un objeto NSNumber, que hace que el código sea más corto.

- (void)keyboardWillShowNotification:(NSNotification *)notification { NSDictionary *info = [notification userInfo]; NSNumber *number = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey]; double duration = [number doubleValue]; }


- (NSTimeInterval)keyboardAnimationDurationForNotification:(NSNotification*)notification { NSDictionary* info = [notification userInfo]; NSValue* value = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval duration = 0; [value getValue:&duration]; return duration; }