Kodumla sorun yaşıyorum. Klavye pop tarafından gizlenmesi gereken UIScrollView
bir UITextField
şeyi düzenlerken hareket ettirmeye çalışıyorum .
Şu anda ana çerçeveyi hareket ettiriyorum çünkü kodda nasıl 'yukarı kaydıracağımı' bilmiyorum. Bu yüzden, biraz kod yaptım, iyi çalışıyor ama bir UI metin alanını düzenlediğimde ve UITextField
'geri dön' düğmesine basmadan bir başkasına geçtiğimde ana görünüm çok yukarı gidiyor.
NSLog()
Aşağıda görebileceğiniz gibi değişkenlerim boyut, mesafe ve textFieldRect.origin.y ile bir yaptım . İkisini UITextField
aynı yere (y orijini) koyduğumda ve bu belirli 'anahtarı' yaptığımda (dönüş tuşuna basmadan), aynı sayıları alıyorum, halbuki kodum ilk UITextField
düzenleme için iyi çalıştı, ancak ikinci düzenleme için değil.
Şuna bir bak:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
{
int size;
CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField];
size = textFieldRect.origin.y + textFieldRect.size.height;
if (change == FALSE)
{
size = size - distance;
}
if (size < PORTRAIT_KEYBOARD_HEIGHT)
{
distance = 0;
}
else if (size > PORTRAIT_KEYBOARD_HEIGHT)
{
distance = size - PORTRAIT_KEYBOARD_HEIGHT + 5; // +5 px for more visibility
}
NSLog(@"origin %f", textFieldRect.origin.y);
NSLog(@"size %d", size);
NSLog(@"distance %d", distance);
CGRect viewFrame = self.view.frame;
viewFrame.origin.y -= distance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
change = FALSE;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
change = TRUE;
CGRect viewFrame = self.view.frame;
viewFrame.origin.y += distance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
}
Herhangi bir fikir ?