Saya mengalami masalah dengan kode saya. Saya mencoba untuk memindahkan UIScrollView
saat saya mengedit UITextField
yang seharusnya disembunyikan oleh pop keyboard.
Saya memindahkan bingkai utama sekarang karena saya tidak tahu cara 'menggulir ke atas' dalam kode. Jadi, saya melakukan sedikit kode, itu berfungsi dengan baik tetapi ketika saya mengedit bidang teks UI dan saya beralih ke yang lain UITextField
tanpa menekan tombol 'kembali', tampilan utama berjalan jauh ke atas.
Saya melakukan NSLog()
dengan ukuran variabel saya, jarak dan textFieldRect.origin.y seperti yang Anda lihat di bawah. Ketika saya meletakkan dua UITextField
di tempat yang sama (asal y) dan saya melakukan 'saklar' khusus ini (tanpa menekan kembali), saya mendapatkan nomor yang sama, sedangkan kode saya berfungsi dengan baik untuk UITextField
pengeditan pertama tetapi tidak untuk pengeditan kedua.
Lihat ini:
- (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];
}
Ada ide?