2014-09-30 3 views
1

У меня есть следующий код:Как изменить размер веб-представления при отключении клавиатуры?

- (void)messageComposerFrameDidChange:(CGRect)frame withAnimationDuration:(float)duration { 

    self.webViewBottomConstraint.constant = _keyboardFrame.size.height-15 + frame.size.height; 
    UIScrollView *scrollView = self.chatConversation.scrollView; 
    CGRect rect = CGRectMake(0, scrollView.contentSize.height, scrollView.contentSize.width, 1); 
    [scrollView scrollRectToVisible:rect animated:YES]; 

    NSInteger height = [[_chatConversation stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue]; 
    NSString* javascript = [NSString stringWithFormat:@"window.scrollBy(0, %d);", height]; 
    [_chatConversation stringByEvaluatingJavaScriptFromString:javascript]; 
} 

Этот код работает отлично, единственная проблема, я имею в том, что, когда я закрыть клавиатуру он показывает Webview только там, где это было вместо изменения размера его обратно в его нормальное положение. Совместим с высотой текста.

WebView Собственность _chatConversation, как вы можете видеть на изображении

Вот Записывать значения

Когда клавиатура закрыта, когда чат для Windows показано: (экран 1)

2014-09-30 10:57:52.391 mobile-app[737:260398] +-------------------------------------------------+ 
2014-09-30 10:57:52.392 mobile-app[737:260398] Keyboard Frame: **0.000000** 
2014-09-30 10:57:52.392 mobile-app[737:260398] Frame Position Y Position: 512.500000 
2014-09-30 10:57:52.393 mobile-app[737:260398] Chat Conversation Height: 401.000000 
2014-09-30 10:57:52.393 mobile-app[737:260398] Chat Conversation Y Position: 64.000000 
2014-09-30 10:57:52.393 mobile-app[737:260398] +-------------------------------------------------+ 

Когда пользователь набирает сообщение (Экран 2)

2014-09-30 10:58:48.265 mobile-app[737:260398] +-------------------------------------------------+ 
2014-09-30 10:58:48.266 mobile-app[737:260398] Keyboard Frame: **253.000000** 
2014-09-30 10:58:48.266 mobile-app[737:260398] Frame Position Y Position: 259.500000 
2014-09-30 10:58:48.267 mobile-app[737:260398] Chat Conversation Height: 463.500000 
2014-09-30 10:58:48.267 mobile-app[737:260398] Chat Conversation Y Position: 64.000000 
2014-09-30 10:58:48.267 mobile-app[737:260398] +-------------------------------------------------+ 

Когда пользователь нажимает назад, чтобы закрыть клавиатуру (экран 3)

2014-09-30 10:59:15.098 mobile-app[737:260398] +-------------------------------------------------+ 
2014-09-30 10:59:15.098 mobile-app[737:260398] Keyboard Frame: **253.000000** 
2014-09-30 10:59:15.098 mobile-app[737:260398] Frame Position Y Position: 512.500000 
2014-09-30 10:59:15.099 mobile-app[737:260398] Chat Conversation Height: 210.500000 
2014-09-30 10:59:15.099 mobile-app[737:260398] Chat Conversation Y Position: 64.000000 
2014-09-30 10:59:15.099 mobile-app[737:260398] +-------------------------------------------------+ 

enter image description here

Если вы видите экран 3 и журнал, клавиатура Рама его 253 вместо 0,0

ответ

0

Не видя больше кода я думаю, что ваша проблема может быть на этой линии:

self.webViewBottomConstraint.constant = _keyboardFrame.size.height-15 + frame.size.height; 

кадр, возвращаемый messageComposerFrameDidChange также будет иметь origin.y, поэтому было бы проще просто использовать это напрямую, а не вручную отслеживать _keyboardFrame. Вы подтвердили, что _keyboardFrame.size.height == 0, когда приходит вызов делегата после того, как клавиатура была уволена?

Другая возможность может быть, что на самом деле UIWebView размер правильно, и вместо прокрутки содержимого не работает, как ожидалось, что является причиной проблемы в экране 3.

+0

да. Keyboardframe равен 0. Здесь находится журнал http://pastie.org/9607414 изменений размера, когда он показывает клавиатуру и отклоняет ее. – eddwinpaz

+0

Когда клавиатура отклоняется, высота не равна 0, как вы говорите, вместо ее 512. – eddwinpaz

+0

Я обновил сообщение. – eddwinpaz

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