Saya mengalami masalah dengan kode saya. Saya mencoba untuk memindahkan UIScrollViewsaat saya mengedit UITextFieldyang 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 UITextFieldtanpa 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 UITextFielddi 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 UITextFieldpengeditan 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?
