2011-01-26 3 views
2

Я использовал пример для книги, чтобы сдвинуть представление вверх, поскольку клавиатура показывает, чтобы она не закрывала текстовые поля.iPhone вид не переиздается после скрытия клавиатуры

Все работает, за исключением того факта, что мое представление скользит вверх и не скользит вниз, если я нажимаю на фон, чтобы скрыть клавиатуру. Клавиатура скрывается, но вид остается смещенным. Если я использую ключ возврата, чтобы скрыть клавиатуру, все работает нормально. Ниже мой код:

- (void)keyboardWillShow:(NSNotification *)notif { 
    NSDictionary* info = [notif userInfo]; 
    NSValue* aValue = [info objectForKey: 
         UIKeyboardBoundsUserInfoKey]; 
    CGSize keyboardSize = [aValue CGRectValue].size; 
    float bottomPoint = (password.frame.origin.y+ 
         password.frame.size.height+10); 

    scrollAmount = keyboardSize.height - 
    (self.view.frame.size.height- bottomPoint); 
    if (scrollAmount > 0) { 
     moveViewUp = YES; 
     [self scrollTheView:YES]; 
    } 
    else 
     moveViewUp = NO; 
} 
- (void)scrollTheView:(BOOL)movedUp { 
    [UIControl beginAnimations:nil context:NULL]; 
    [UIControl setAnimationDuration:0.3]; 
    CGRect rect = self.view.frame; 
    if (movedUp){ 
     rect.origin.y -= scrollAmount; 
    } 
    else { 
     rect.origin.y += scrollAmount; 
    } 
    self.view.frame = rect; 
    [UIControl commitAnimations]; 
} 

-(BOOL)textFieldShouldReturn:(UITextField *) theTextField { 
    [theTextField resignFirstResponder]; 
    if (moveViewUp) [self scrollTheView:NO]; 
    return YES; 
} 

Я имею трудное время выяснить, почему мнение, что анимация вниз после того, как с клавиатуры скрыто при прикосновении фона, чтобы скрыть клавиатуру

Еще раз любая помощь ,

+0

Вы подтвердили, что когда вы нажимаете на фон (а не на завершение), что он запускает метод textFieldShouldReturn? – DerekH

+0

Хмм, я должен был проверить это раньше. Он не запускает мой метод textFieldShouldReturn. Любые идеи почему? – mike

ответ

0

Метод textFieldShouldReturn вызывается только при нажатии кнопки возврата на клавиатуре. Чтобы поймать все виды исчезновения клавиатуры, используйте textFieldDidEndEditing.

Другой подход заключается в регистрации на UIKeyboardWillHideNotification, а также UIKeyboardWillShowNotification.

0

Измените 'UIControl' в своих операторах анимации на 'UIView'.

Смежные вопросы