Jakiś czas temu, widziałem stałą pewnego rodzaju, która określała szybkość animacji Klawiatury na iPhonie i nie mogę na całe życie zapamiętać, gdzie to widziałem ... żadnego wglądu?Jaka jest domyślna częstotliwość animacji klawiatury telefonu iPhone?
Odpowiedz
- (NSTimeInterval)keyboardAnimationDurationForNotification:(NSNotification*)notification
{
NSDictionary* info = [notification userInfo];
NSValue* value = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval duration = 0;
[value getValue:&duration];
return duration;
}
Jeśli przyszedłeś tutaj, szukając odpowiedzi MonoTouch, nie szukaj dalej niż "e.AnimationDuration". –
Należy zwrócić uwagę, że aby być precyzyjnym, należy również dostosować inne klawisze animacji, takie jak 'UIKeyboardAnimationCurveUserInfoKey'. – Rick
@Dan, jestem użytkownikiem MonoTouch, ale czym jest 'e'? –
UIKeyboardAnimationDurationUserInfoKey Klucz dla obiektu NSValue zawierający podwójne oznaczenie czasu trwania animacji w sekundach.
Hej mate, jest kluczem UIKeyboardAnimationDurationUserInfoKey w słowniku informacji użytkownika powiadomienia ???? -thx – ShortCircuit
Ponieważ jest to pierwszy google hit, chciałbym podkreślić, że ciężko kodowania 0.3 będzie oznaczać, że widok będzie nieprawidłowo animować gdy użytkownicy międzynarodowych (np japoński) wymiany między różnymi wielkości klawiatur (gdy to działanie powinno być natychmiastowe).
Zawsze używaj wartości parametru UIKeyboardAnimationDurationUserInfoKey w słowniku użytkownika userInfo wartość - zostanie ustawiona na 0, gdy użytkownik przegląda klawisze.
UWAGA: w chwili pisania (iOS 5.1.1) domyślny czas trwania wynosi teraz 0,25 s. Tak więc, jak mówi @greenlight, nigdy nie twórzcie tego - używajcie danych ze słownika userInfo powiadomienia. –
Aby dodać trochę więcej do tego, co napisał Shaggy Frog. Pełne wdrożenie byłoby coś jak:
[[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 teraz jest obiektem NSNumber, który sprawia, że kod krótszy.
- (void)keyboardWillShowNotification:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
NSNumber *number = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
double duration = [number doubleValue];
}
Jedna linijka: 'podwójny czas trwania = [notification.userInfo [UIKeyboardAnimationDurationUserInfoKey] doubleValue];' –
w Swift kod będzie wyglądać następująco:
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 - pracował dla mnie:
if let duration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double {
UIView.animate(withDuration: duration, animations: {
self.view.layoutIfNeeded()
})
}
W trybie debugowania mój duration
został 3.499999
- 1. domyślna klawiatura numeryczna telefonu iPhone
- 2. Datepicker telefonu iPhone zamiast klawiatury?
- 3. Lokalizacja telefonu iPhone - Uzyskaj kod języka telefonu?
- 4. Pełny ekran telefonu iPhone
- 5. Jaka jest wartość domyślna elementu w tablicy?
- 6. Jaka jest domyślna czcionka dla ggplot2
- 7. SQL: Jaka jest domyślna kolejność zapytań?
- 8. Python: Jaka jest domyślna obsługa SIGTERM?
- 9. Jaka jest domyślna ścieżka debug.keystore na Macu?
- 10. Jaka jest domyślna strefa czasowa w java.util.Date
- 11. Jaka jest domyślna metoda HTTP formularza?
- 12. Jak uzyskać stłumiony dźwięk klawiatury iPhone OS 3.1?
- 13. Jaka jest domyślna rodzina czcionek w systemie Android?
- 14. Zmiana koloru klawiatury w iphone
- 15. jest jakiś sposób, aby programowo uzyskać częstotliwość odświeżania ekranu?
- 16. Gdzie jest baza danych typu MIME telefonu iPhone?
- 17. Klawiatura telefonu iPhone, przycisk "Gotowe" i rezygnacja "Rezygnuj z opinii"
- 18. Numer telefonu iPhone po usunięciu aplikacji
- 19. Niestandardowy tekst zwrotny dla telefonu iPhone
- 20. String do formatu numer telefonu iPhone SDK
- 21. UIModalTransitionStyleFlipCzas animacji poziomej?
- 22. Jaka jest wartość domyślna dla członków klasy C++?
- 23. Jaka jest domyślna nazwa pola tekstowego dla Summernote?
- 24. Jaka jest domyślna wartość atrybutu "position" dla DIV?
- 25. Jaka jest wartość domyślna (IEnumerable <T>)?
- 26. Jaka jest domyślna kolejność listy zwróconej przez wywołanie filtru Django?
- 27. Jaka jest domyślna lista stopwords użytych w StopFilter Lucene?
- 28. Jaka jest domyślna wartość ConnectTimeout w ciągu połączenia?
- 29. Jaka jest domyślna ścieżka do bazy danych dla MongoDB?
- 30. Jaka jest domyślna nazwa użytkownika dla instancji SSH EC2 Linux?
To zawsze 0,3 ! : P –
Styl klawiatury i zachowanie podczas obrotu zostały zmienione między 2.2.1 a 3.0; kto powiedział, że nie zmieni wskaźnika animacji w późniejszych wersjach? – rpetrich
Jeszcze lepszą odpowiedź można znaleźć na stronie http://stackoverflow.com/a/19235995/39946 Zapewnia ona poprawny czas trwania i poprawną krzywą animacji. –