Bir süre önce iPhone'daki Klavyenin animasyon hızını tanımlayan bir çeşit sabit gördüğümü hatırlıyorum ve hayatımı göremediğim yeri hatırlayamıyorum .... herhangi bir kavrayış mı?iPhone'un varsayılan klavye animasyon hızı nedir?
cevap
- (NSTimeInterval)keyboardAnimationDurationForNotification:(NSNotification*)notification
{
NSDictionary* info = [notification userInfo];
NSValue* value = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval duration = 0;
[value getValue:&duration];
return duration;
}
Eğer buraya MonoTouch cevabını aramak için geldiyseniz, e.AnimationDuration'dan başka bir yere bakmayın. –
Kesin olması için, UIKeyboardAnimationCurveUserInfoKey' gibi diğer animasyon tuşlarını da ayarlamanız gerektiğini unutmayın. – Rick
@Dan, Ben bir MonoTouch kullanıcısıyım, ama 'e' nedir? –
UIKeyboardAnimationDurationUserInfoKey Animasyon süresini saniye cinsinden tanımlayan bir çift içeren bir NSValue nesnesinin anahtarı.
Hey dostum, bildirimin kullanıcı bilgisi sözlüğünde UIKeyboardAnimationDurationUserInfoKey anahtarıdır ???? -thx – ShortCircuit
bu ilk google isabet olduğundan, sabit kodlama 0.3 görüşünüz yanlış animasyon anlamına gelecektir işaret etmek istiyorum ne zaman uluslararası kullanıcılar farklı büyüklükteki klavyeler arasında (örneğin Japonca) takas (Bu eylem anında olmalı).
Her zaman bildirimin userInfo sözlüğünün UIKeyboardAnimationDurationUserInfoKey değeri değerini kullanın - kullanıcı klavyeden geçerken 0'a ayarlanır.
NB: yazma sırasında (iOS 5.1.1) varsayılan süre şimdi 0,25s'dir. @greenlight'ın dediği gibi, bunu hiç kodlama - bildirimin userInfo sözlüğündeki verileri kullan. –
Shaggy Frog'un yazdıklarına biraz daha eklemek için.
[[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 şimdi kod kısaltır bir NSNumber nesnesidir: tam olarak uygulanması gibi bir şey olurdu. kod aşağıdaki gibi görünecek Swift ise
- (void)keyboardWillShowNotification:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
NSNumber *number = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
double duration = [number doubleValue];
}
Tek liner: 'double duration = [notification.userInfo [UIKeyboardAnimationDurationUserInfoKey] doubleValue];' –
:
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 - benim için çalıştı:
if let duration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double {
UIView.animate(withDuration: duration, animations: {
self.view.layoutIfNeeded()
})
}
ayıklama modunda benim duration
Her zaman 0.3 3.499999
- 1. Google Maps: Değişim işaretleyici animasyon hızı
- 2. UICollectionView düzeni değişiklikleri için varsayılan animasyon süresi nedir?
- 3. Animasyon hızı, beginAnimations ile animasyonlar bloğu arasında farklıdır
- 4. klavye kısayolu (Eclipse) (Tüm versiyonlar için Evrensel Klavye Kısayol) Tutulma herhangi sınıfta varsayılan bir Oluşturucu Yapımı İçin Klavye Kısayol nedir
- 5. Bu klavye kısayol denetimi nedir?
- 6. Varsayılan msbuild platformu nedir
- 7. UIModalTransitionStyleFlipHorizontal animasyon süresi?
- 8. Animasyon yaparken timeOffset ayarının etkisi nedir?
- 9. Google Drive Site Publishing sınırlamaları ve yükleme hızı nedir?
- 10. Eşit Yöntem'in varsayılan davranışı nedir?
- 11. GPars varsayılan havuz boyutu nedir?
- 12. Sinatra'da varsayılan oturumun süresi nedir?
- 13. Android'de varsayılan font ailesi nedir?
- 14. IoC (Windsor) - "Varsayılan Arabirim" nedir?
- 15. Android'lerde varsayılan yükseklik nedir TabLayout
- 16. Kolaylaştırma animasyon ile NSWindows yeniden boyutlandırma
- 17. animasyon
- 18. OpenGL'de Animasyon için Animasyon Animasyonundan Yararlanma
- 19. Dosya yükleme hızı (aktarım hızı) php ile nasıl edinilir?
- 20. Fare tıklamaları, klavye odağını varsayılan olarak odaklanabilir denetimlere getirir mi?
- 21. Android List Animasyon olmadan görünüm varsayılan konumunu göster
- 22. WebAudio API örnekleme hızı
- 23. SVG metin öğesi hızı
- 24. Haber akışı hızı
- 25. Bağlantı Hızı al - Win32_PerfRawData_Tcpip_NetworkInterface
- 26. Çerçeve hızı çok yüksek
- 27. Azure FTP Yükleme hızı
- 28. Microsoft Konuşma Tanıma Hızı
- 29. show İşlemci hızı
- 30. Ekleme hızı yavaşlama mysql
var edildi ! : P –
Klavye stili ve döndürme davranışı 2.2.1 ve 3.0 arasında değiştirildi; kim daha sonraki versiyonlarda animasyon oranını değiştirmeyecek? – rpetrich
Buna daha da iyi bir cevap http://stackoverflow.com/a/19235995/39946 adresinde bulunabilir. Doğru süreyi ve doğru animasyon eğrisini sağlar. –