键入时如何更改 UIWebview 高度?
Posted
技术标签:
【中文标题】键入时如何更改 UIWebview 高度?【英文标题】:How to Change UIWebview height when typing? 【发布时间】:2013-10-24 11:10:25 【问题描述】:我正在使用UIWebView
创建富文本编辑器。此 Web 视图放置在 UITableView
的自定义单元格内
在 webview 中输入时我需要更改单元格大小。我想在打字时获得 webview 的高度。 webview 内部没有滚动。
这是webview初始内容,
NSString* plainContent = @"Edit here.....";
NSString* htmlContentString = [NSString stringWithFormat:
@"<html>"
"<body>"
"<div id=\"content\" contenteditable=\"true\" style=\"font-family: Arial\">"
"%@"
"</div>"
"</body></html>", plainContent];
[_webView loadHTMLString:htmlContentString baseURL:nil];
如何在输入时更改UIWebView
的高度?
【问题讨论】:
【参考方案1】:因为 UIWebView 是 UITableViewCell 的子视图,如果你想增加 webview 的大小,你必须增加 UITableView 的大小,请看这个线程,这更接近你想要的。
Can the height of a UITableViewCell be changed without reloading the table view?
increase uitableviewcell height simultaneously increasing the inner UITextView
谢谢。
【讨论】:
我想根据打字来获取UIwebview的高度。我需要知道打字时如何获取uiwebview。之后我可以更改表格视图的高度。 您可以使用 webView.scrollView.contentSize.height 获取它。 是的,谢谢它的工作。当我输入它时会增加高度。但是当我删除文本时,它不会降低高度。为什么?【参考方案2】:我知道这是不久前被问到的,但我正在努力解决这个问题,我发现了处理这个问题的方法。简而言之,处理这个问题的最好方法是通过以下方式使用 javascriptCore.framework
let context = self.webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as JSContext
var callbackHandler : @objc_block (JSValue) -> Void = (val : JSValue) -> Void in
NSLog("Got callback")
context.setObject(unsafeBitCast(callbackHandler, AnyObject.self), forKeyedSubscript: "callApp")
context.evaluateScript("document.getElementById('content').addEventListener('input', callApp, false);")
这段代码的作用如下:
在UIWebView
和 Swift 之间建立连接
将 Swift 处理程序添加到 JavaScript 函数 callApp
更新您的可编辑 div
以在输入更改时调用 JavaScript 函数 callApp
当它被连接时,你在UIWebView
中输入的每一次按键都会在 Swift 中触发callbackHandler
。然后,您可以根据需要使用它来调整 UIWebView
的大小。
【讨论】:
以上是关于键入时如何更改 UIWebview 高度?的主要内容,如果未能解决你的问题,请参考以下文章
使用 UIWebView+AFNetworking 时链接如下