Un po 'di tempo fa ricordo di aver visto una costante di qualche tipo che definiva il ritmo di animazione della tastiera sull'iPhone e non posso per la vita di me ricordare dove l'ho visto ... qualche intuizione?Qual è la frequenza di animazione della tastiera predefinita di iPhone?
risposta
- (NSTimeInterval)keyboardAnimationDurationForNotification:(NSNotification*)notification
{
NSDictionary* info = [notification userInfo];
NSValue* value = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval duration = 0;
[value getValue:&duration];
return duration;
}
Se siete venuti qui cercando la risposta di MonoTouch, non cercate oltre "e.AnimationDuration". –
Nota che per essere precisi, dovresti anche regolare gli altri tasti di animazione, come "UIKeyboardAnimationCurveUserInfoKey". – Rick
@Dan, sono un utente di MonoTouch, ma cos'è "e"? –
UIKeyboardAnimationDurationUserInfoKey La chiave per un oggetto NSValue che contiene un doppio che identifica la durata dell'animazione in secondi.
Ehi amico, è la chiave UIKeyboardAnimationDurationUserInfoKey nel dizionario delle informazioni utente della notifica ???? -thx – ShortCircuit
Dal momento che questo è il primo colpo di Google, vorrei far notare che hard-codifica 0.3 vorrà dire che la visuale si erroneamente animare quando gli utenti internazionali (ad esempio giapponese) di swap tra le tastiere di dimensioni diverse (quando quell'azione dovrebbe essere immediata).
Usare sempre UIKeyboardAnimationDurationUserInfoKey valore del dizionario userInfo della notifica - si ottiene impostato a 0 quando l'utente sta sfogliando tastiere.
NB: al momento della scrittura (iOS 5.1.1) la durata predefinita è ora di 0.25 s. Quindi, come dice @greenlight, non scrivere mai questo codice in modo permanente - usa i dati dal dizionario userinfo della notifica. –
Per aggiungere un po 'di più a quello che ha scritto Shaggy Frog. L'implementazione completa sarebbe qualcosa di simile:
[[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 ora è un oggetto NSNumber, che rende il codice più 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];' –
In Swift il codice sarà simile a questa:
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 - ha lavorato per me:
if let duration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double {
UIView.animate(withDuration: duration, animations: {
self.view.layoutIfNeeded()
})
}
In modalità di debug mia duration
stato 3.499999
- 1. imposta la velocità di animazione predefinita jquery
- 2. Qual è la scorciatoia da tastiera predefinita per l'apertura di Selenium IDE da Firefox
- 3. HTML5 Video - qual è la frequenza di riproduzione massima?
- 4. Animazione dell'otturatore AVFoundation iphone
- 5. Qual è la precisione predefinita di c printf% f?
- 6. Impedisci la visualizzazione della tastiera predefinita quando viene premuto UITextField
- 7. Ottenere la frequenza del suono su iPhone
- 8. Notebook IPython: qual è la codifica predefinita?
- 9. Frequenza di aggiornamento del gestore località, iphone
- 10. iOS AssistiveTouch animazione lenta quando si usa la tastiera personalizzata
- 11. Qual è la matematica dietro questa animazione di tipo ray?
- 12. iPhone Best practice di animazione UIView
- 13. Qual è la modalità di contesto dell'istanza predefinita?
- 14. Qual è la selezione predefinita di XSLT apply-templates?
- 15. Qual è la licenza di codice predefinita pubblicata su GitHub?
- 16. Qual è l'altezza predefinita di UITableViewCell?
- 17. Qual è l'implementazione predefinita di `hashCode`?
- 18. Come calcolare la probabilità di selezione della frequenza dinamica wifi
- 19. Controllo della posizione della vista di correzione automatica su iPhone
- 20. La variabile di ritorno predefinita della funzione è sempre allocata?
- 21. Implementazione della tastiera pop animazione in iOS 8 Keyboard Extension
- 22. Qual è responsabile di modificare il carico e la frequenza di core di processore multicore
- 23. Qual è la durata dell'animazione predefinita per le modifiche al layout di UICollectionView?
- 24. iPhone: è possibile nascondere la tastiera mentre si tocca UITextField?
- 25. Obiettivo C - Iphone. Come posso mostrare la tastiera numerica per impostazione predefinita?
- 26. Qual è la sessione predefinita scaduta in Sinatra?
- 27. Mostra programmaticamente la tastiera sull'app per iPhone
- 28. Qual è la parte nltk predefinita del tagset vocale?
- 29. Animazione transizione arricciatura pagina iPhone
- 30. Tastiera iPhone personalizzata
E 'sempre 0.3 ! : P –
Lo stile della tastiera e il comportamento di rotazione sono stati modificati tra 2.2.1 e 3.0; chi dice che non cambieranno il ritmo di animazione nelle versioni successive? – rpetrich
Una risposta ancora migliore a questo può essere trovata su http://stackoverflow.com/a/19235995/39946 Fornisce la durata corretta e la corretta curva di animazione. –