ฉันมีปัญหากับรหัสของฉัน ฉันกำลังพยายามย้ายUIScrollView
เมื่อฉันแก้ไขสิ่งUITextField
ที่ควรจะซ่อนโดยป๊อปแป้นพิมพ์
ตอนนี้ฉันกำลังย้ายเฟรมหลักเพราะฉันไม่รู้ว่าจะ "เลื่อนขึ้น" ในโค้ดอย่างไร ดังนั้นฉันทำโค้ดนิดหน่อยมันก็ใช้งานได้ดี แต่เมื่อฉันแก้ไข UItextfield และฉันเปลี่ยนไปใช้อันอื่นUITextField
โดยไม่ต้องกดปุ่ม 'return' มุมมองหลักจะไปไกลขึ้น
ฉันทำNSLog()
กับตัวแปรขนาดระยะทางและ textFieldRect.origin.y ดังที่คุณเห็นด้านล่าง เมื่อฉันใส่สองตัวUITextField
ในที่เดียวกัน (จุดเริ่มต้น y) และฉันทำ 'สวิตช์' นี้โดยเฉพาะ (โดยไม่ต้องกด return) ฉันจะได้ตัวเลขเดียวกันในขณะที่รหัสของฉันทำงานได้ดีสำหรับการUITextField
แก้ไขครั้งแรกแต่ไม่ใช่สำหรับการแก้ไขครั้งที่สอง
ลองดู:
- (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];
}
ความคิดใด ๆ ?