2013-09-26 15 views
10

iOS 6'da viewDidLoad numaralı telefondan klavyeyi kullanıyorum. NavigationController yeni viewController iter zaman Klavye doğru zamanda gösteriliyor iOS7

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [txtField becomeFirstResponder]; 
} 

Bu şekilde

, klavye sağ ve kaçınarak aşağıdan yukarıya animasyon soldan sorunsuz animasyon, zaten orada.

iOS 7'de bu davranış bozuk görünüyor.

viewDidLoad numaralı telefona [txtField becomeFirstResponder] eklediğimde, klavye şu anda son konumunda olan animasyonun ortasında beliriyor: hoş olmayan bir etki!

[txtField becomeFirstResponder] ürününü viewWillAppear numaralı ürüne taşımayı denedim, ancak son sonuç değiştirilmedi.

Yeni viewController ve klavyeyi bir araya getirerek iOS 6 davranışını geri almanın bir yolunu biliyor musunuz?

DÜZENLEME: Bir zamanlayıcı kullanılmıyor da ... ne zaman gecikme ayarlı olursa olsun, klavyede yalnızca animasyonun sonunda gösterilir.

Şimdiye kadar, elimden gelenin en iyisi, [txtField becomeFirstResponder]'u viewWillLayoutSubviews veya viewDidLayoutSubviews içine koymaktır. Ne yazık ki, viewController'ı iterken ancak arkadan patladığında (klavye görünmüyor) çalışırken çok çalışıyor.

+0

Gecikme süresini 0,05 saniye olarak kullanın ios 7. – yen

+0

Öneriniz için teşekkürler, maalesef benim için çalışmıyor. Lütfen EDIT'ime bir göz atın. – Beppe

cevap

12

Çalışmaya zorlamak için geçici çözümünüzü viewWillLayoutSubviews numaralı telefondan saptamayı başardım.

- (void)viewWillLayoutSubviews { 

    if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) { 
     [self.textField1 becomeFirstResponder]; 
    } 
} 

Bu, her iki yığın üzerine itmek için benim için çalışıyor ve kalıcı bir görünüm denetleyicisi kapatıldıktan sonra.

+3

Harika! .. bu tam olarak ihtiyacım olan şeydi .. ViewWillAppear çok yakında ve ViewDidAppear çok geç. – delux247