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?¿Cuál es la tasa de animación de teclado predeterminada del iPhone?
Respuesta
- (NSTimeInterval)keyboardAnimationDurationForNotification:(NSNotification*)notification
{
NSDictionary* info = [notification userInfo];
NSValue* value = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval duration = 0;
[value getValue:&duration];
return duration;
}
Si vino aquí buscando la respuesta de MonoTouch, no busque más, 'e.AnimationDuration'. –
Tenga en cuenta que, para ser precisos, también debe ajustar las otras teclas de animación, como 'UIKeyboardAnimationCurveUserInfoKey'. – Rick
@Dan, soy usuario de MonoTouch, pero ¿qué es 'e'? –
UIKeyboardAnimationDurationUserInfoKey La clave para un objeto NSValue que contiene un doble que identifica la duración de la animación en segundos.
Oye compañero, ¿la clave UIKeyboardAnimationDurationUserInfoKey en el diccionario de información de usuario de la notificación ???? -thx – ShortCircuit
Dado que este es el primer golpe google, me gustaría señalar que dura codificación de 0,3 significa que la vista se animará de forma incorrecta cuando los usuarios internacionales (por ejemplo japonés) de intercambio entre diferentes tamaños de teclados (cuando esa acción debería ser instantánea).
Utilice siempre el valor UIKeyboardAnimationDurationUserInfoKey del diccionario de usuario de notificación - se establece en 0 cuando el usuario está pasando por los teclados.
NB: en el momento de la escritura (iOS 5.1.1) la duración predeterminada ahora es 0.25s. Así que, como dice @greenlight, nunca codifique esto: use los datos del diccionario userInfo de la notificación. –
Para agregar un poco más a lo que Shaggy Frog escribió. La plena aplicación 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;
}
UIKeyboardAnimationDurationUserInfoKey ahora es un objeto NSNumber, que hace que el código más corto.
- (void)keyboardWillShowNotification:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
NSNumber *number = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
double duration = [number doubleValue];
}
One-liner: 'double duration = [notification.userInfo [UIKeyboardAnimationDurationUserInfoKey] doubleValue];' –
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)
Swift 4 - trabajó para mí:
if let duration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double {
UIView.animate(withDuration: duration, animations: {
self.view.layoutIfNeeded()
})
}
En el modo de depuración mi duration
se 3.499999
- 1. ¿Cuál es la altura del teclado en pantalla del iPhone?
- 2. ¿Cuál es la tasa de choque para md5?
- 3. ¿Cuál es la tasa de compresión máxima teóricamente posible?
- 4. Personalización del teclado del iPhone
- 5. ¿Cuál es la altura predeterminada de UITableViewCell?
- 6. ¿Cuál es la resolución de la pantalla del iPhone?
- 7. Configuración del idioma del teclado del iPhone
- 8. iPhone 5 Tamaño del teclado
- 9. ¿Cuál es la codificación predeterminada para System.IO.File.ReadAllText
- 10. Teclado de iPhone personalizado
- 11. ¿Cuál es la codificación predeterminada de la JVM?
- 12. iphone development: deshabilitar la interacción del usuario durante la animación
- 13. iPhone datepicker en lugar de teclado?
- 14. ¿Cuál es la ubicación predeterminada para los registros de MSBuild?
- 15. teclado del iPhone, botón Listo y resignFirstResponder
- 16. Cómo verificar el teclado del iPhone ¿Desea encender/apagar el sonido del teclado en la configuración?
- 17. Ocultar el teclado del iPhone usando Javascript
- 18. Cambia el color del teclado en iphone
- 19. ¿Cuál es la ruta predeterminada de debug.keystore en Mac?
- 20. PHP: ¿Cuál es la duración predeterminada de una sesión
- 21. ¿Cuál es la configuración predeterminada de MongoDB en OSX?
- 22. ¿Cuál es la inicialización predeterminada de una matriz en Java?
- 23. Objetivo C - Iphone. ¿Cómo puedo mostrar el teclado numérico de forma predeterminada?
- 24. Mostrar el teclado del iPhone programáticamente
- 25. iOS: deshabilita la animación de UITableView cuando aparece el teclado
- 26. teclado del teclado numérico no muestra la tecla de retorno en el iphone
- 27. ¿Detecta la tasa de compresión JPG?
- 28. Cómo se crea una animación de ondulación similar a la animación de eliminación de iphone
- 29. atajos de teclado iPhone/iPad?
- 30. Teclado numérico predeterminado de iPhone
Siempre es 0,3 ! : P –
El estilo de teclado y el comportamiento de rotación se cambiaron entre 2.2.1 y 3.0; ¿quién puede decir que no cambiarán la tasa de animación en versiones posteriores? – rpetrich
Se puede encontrar una respuesta aún mejor en http://stackoverflow.com/a/19235995/39946 Proporciona la duración correcta y la curva de animación correcta. –