2014-09-30 59 views
1

我有下面的代碼:如何在鍵盤解散時調整Webview的大小?

- (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]; 
} 

此代碼作品完美,我有唯一的問題是,當我取消鍵盤它顯示了網頁視圖只是它在哪裏,而不是調整回其正常的位置。與textview高度對齊。

的的WebView屬性是_chatConversation,你可以像

在這裏,看到的是對數值

當時,會顯示聊天窗口鍵盤被關閉:屏幕(屏幕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 2014-09-30 14:11:59

+0

當鍵盤被解散時,高度不是0,而是您提到它的512. – eddwinpaz 2014-09-30 14:59:06

+0

我已更新我的帖子。 – eddwinpaz 2014-09-30 17:32:21

相關問題