2016-04-08 58 views
2

Bir sorunla karşılaştım - klavye gösterildiğinde, kodum görüntü denetleyicinin görünüm çerçevesi boyutunu kısıtlama ayarına göre ayarlayacak, tüm bileşenler doğru konumda olacaktır. Ancak, bazen sol resim gibi çalışacak, ancak bu görünüm denetleyicisine belirli noktalardan girersek, sağdaki resim gibi görünecektir. Klavye göstermek algıladığındaself.view set çerçevesi, klavye gösterildiğinde çalışmaz

enter image description here

ve burada

- (void)moveTextViewForKeyboard:(NSNotification*)aNotification 
         up:(BOOL)up { 

NSDictionary* userInfo = [aNotification userInfo]; 
NSTimeInterval animationDuration; 
UIViewAnimationCurve animationCurve; 
CGRect keyboardEndFrame; 

[[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve]; 
[[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration]; 
[[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame]; 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:animationDuration]; 
[UIView setAnimationCurve:animationCurve]; 

CGRect keyboardFrame = [self.view convertRect:keyboardEndFrame toView:nil]; 

CGRect viewFrame = self.view.frame; 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenHeight = screenRect.size.height; 

if (up) { 
    viewFrame.size.height = screenHeight - (keyboardFrame.size.height) - viewFrame.origin.y; 
} else { 
    viewFrame.size.height = screenHeight; 
} 

[self.view setFrame:viewFrame]; 

[UIView commitAnimations]; 

} Zaten gün burada arama yapmış

... yine de başarısız .. benim kodudur: (Size yardımcı olabilecek uzman var mı? Teşekkür peşin teşekkür ederiz.

cevap

2

Eğer otomatik yayın kullanıyorsanız, çerçeveyi manuel olarak ayarlamamalısınız. UI'nizi karıştırmanız olasıdır.
sonra setNeedsLayout ve

+0

Evet, bu otomatik düzen ortamında doğru yoldur -layoutIfNeeded kullanarak düzeni güncellemek için autoLayout sorar, klavye değişimi karşılamak için ellerinden constant özelliğini değiştirmek, bir veya daha fazla kısıtlamalar bir başvuru oluşturun. –

+1

Çok teşekkür ederim Andrea, söylediğin gibi çalışıyor. ders alıyorum. :) –