我正在使用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
高度?
答案 0 :(得分:0)
因为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
感谢。
答案 1 :(得分:0)
我知道这是前一段时间被问到的,但我正在研究这个问题,并且我发现了解决这个问题的方法。简而言之,处理此问题的最佳方法是通过以下方式使用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 callApp
div
以在输入更改时调用JavaScript函数callApp
当连接时,您在UIWebView
中输入的每个按键都将触发Swift中的callbackHandler
。然后,您可以根据需要使用此选项调整UIWebView
的大小。