मुझे अपने कोड से परेशानी हो रही है। UIScrollView
जब मैं संपादन कर रहा होता हूं तो उसे स्थानांतरित करने का प्रयास करता हूं, UITextField
जिसे कीबोर्ड पॉप द्वारा छिपाया जाना चाहिए।
मैं अभी मुख्य फ्रेम को आगे बढ़ा रहा हूं क्योंकि मुझे नहीं पता कि कोड में 'स्क्रॉल अप' कैसे किया जाए। इसलिए, मैंने थोड़ा सा कोड किया था, यह ठीक काम कर रहा है, लेकिन जब मैं एक UItextfield को संपादित करता हूं और मैं UITextField
'रिटर्न' बटन को दबाए बिना दूसरे पर स्विच करता हूं तो मुख्य दृश्य दूर तक waaayyyyy जाता है।
NSLog()
जैसा कि आप नीचे देख सकते हैं मैंने अपने चर आकार, दूरी और textFieldRect.origin.y के साथ किया। जब मैं UITextField
एक ही स्थान (y मूल) पर दो डालता हूं और मैं यह विशेष रूप से 'स्विच' (wihtout दबाने वाला रिटर्न) करता हूं, तो मुझे समान संख्याएं मिलती हैं, जबकि मेरा कोड पहले 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];
}
कोई विचार ?