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
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.
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 ellerindenconstant
özelliğini değiştirmek, bir veya daha fazla kısıtlamalar bir başvuru oluşturun. –Çok teşekkür ederim Andrea, söylediğin gibi çalışıyor. ders alıyorum. :) –