UIScrollView проблема прокрутки - PullRequest
       10

UIScrollView проблема прокрутки

0 голосов
/ 14 октября 2011

У меня есть прокрутка, которая отлично работает, пока я не отпущу клавиатуру. После этого он прокручивается, но не до конца ... Я немного озадачен.

в viewDidLoad я сохраняю фрейм, чтобы позже его можно было сбросить

frame = self.scrollView.frame;
NSLog(@"Height beginning: %f",self.scrollView.frame.size.height);
offset = self.scrollView.contentOffset;

Для отладки я проверил высоту прокрутки, которая составляет 629

в моем методе keyboardDidHide я установил старую рамку обратно

self.scrollView.frame = frame;
NSLog(@"Height end: %f",self.scrollView.frame.size.height);

// Reset the scrollview to previous location
self.scrollView.contentOffset = offset;

Выходные данные отладки также равны 629, что означает, что высота просмотра прокрутки была установлена ​​на старое значение. Он прокручивается, но когда я отпускаю его, он возвращается к началу ...

EDIT:

При использовании 480 в качестве высоты он не заполняет весь экран из-за iphone 4

enter image description here

Какой-то код

-(void) keyboardDidShow: (NSNotification *)notif 
{
    NSLog(@"Keyboard is visible");
    // If keyboard is visible, return
    if (keyboardVisible) {
        NSLog(@"Keyboard is already visible. Ignore notification.");
        return;
    }

    // Get the size of the keyboard.
    CGRect keyboardEndFrame;
    [[notif.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];

    // Resize the scroll view to make room for the keyboard
    CGRect viewFrame = frame;
    viewFrame.size.height = 200;
    //viewFrame.size.height -= keyboardEndFrame.size.height;
    self.scrollView.frame = viewFrame;

    offset = self.scrollView.contentOffset;

    CGRect textFieldRect;

    if(!activeField)
        textFieldRect = comment.frame;
    else
        textFieldRect = activeField.frame;

    textFieldRect.origin.y += 10;
    [self.scrollView scrollRectToVisible:textFieldRect animated:YES];

    // Keyboard is now visible
    keyboardVisible = YES;
}

-(void) keyboardDidHide: (NSNotification *)notif 
{
    // Is the keyboard already shown
    if (!keyboardVisible) {
        NSLog(@"Keyboard is already hidden. Ignore notification.");
        return;
    }

    //viewFrame.size.height -= keyboardEndFrame.size.height;
    self.scrollView.frame = frame;
    [self.scrollView setContentSize:CGSizeMake(320, 700)];

    // Reset the scrollview to previous location
    self.scrollView.contentOffset = offset;

    // Keyboard is no longer visible
    keyboardVisible = NO;   
}
...