首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >键盘关闭时如何调整Webview的大小?

键盘关闭时如何调整Webview的大小?
EN

Stack Overflow用户
提问于 2014-09-30 11:22:04
回答 1查看 1.2K关注 0票数 1

我得到了以下代码:

代码语言:javascript
运行
复制
- (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

以下是日志值

在显示聊天窗口时关闭键盘时:(屏幕1)

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
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] +-------------------------------------------------+

如果你看到屏幕3和日志,键盘帧是253而不是0.0

EN

回答 1

Stack Overflow用户

发布于 2014-09-30 12:54:33

在没有看到更多代码的情况下,我猜测您的问题可能出在下面这一行:

代码语言:javascript
运行
复制
 self.webViewBottomConstraint.constant = _keyboardFrame.size.height-15 + frame.size.height;

messageComposerFrameDidChange返回的帧也将有一个origin.y,因此直接使用它可能比手动跟踪_keyboardFrame更容易。您是否验证了在关闭键盘后委托调用进入时的_keyboardFrame.size.height == 0

另一种可能性可能是UIWebView确实正确地调整了大小,而内容滚动并没有像预期的那样工作,这导致了屏幕3中的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26112262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档