আমার কোড নিয়ে আমার সমস্যা হচ্ছে। কীবোর্ড পপ দ্বারা লুকানো উচিত এমন UIScrollView
কোনও সম্পাদনা করার সময় আমি সরিয়ে নেওয়ার চেষ্টা করছি UITextField
।
আমি এখনই মূল ফ্রেমটি সরিয়ে নিচ্ছি কারণ কোডে কীভাবে 'স্ক্রোল আপ' করতে হয় তা আমি জানি না। সুতরাং, আমি কিছুটা কোড দিয়েছি, এটি ঠিকঠাক কাজ করছে তবে যখন আমি কোনও ইউআইটেক্সটফিল্ড সম্পাদনা করি এবং আমি UITextField
'রিটার্ন' বোতামটি টিপ না করেই অন্যটিতে চলে যাই তবে মূল দৃষ্টিভঙ্গি ওয়াইয়াইয়্যি পর্যন্ত চলে যায়।
আমি একজন করেনি NSLog()
আমার ভেরিয়েবল আকার, দূরত্ব এবং textFieldRect.origin.y মত আপনি নীচের দেখতে পারেন। যখন আমি UITextField
একই জায়গায় দুটি (y উত্স) রেখেছি এবং আমি এই বিশেষ 'স্যুইচ' (রিটার্ন টিপুন), আমি একই নম্বর পাই তবে আমার কোডটি প্রথম 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];
}
কোন ধারনা ?