0

我的应用程序中有 UIWebView。在 UIWebView 我有一些结构化的文本。当用户点击该文本的某些部分时,它会被突出显示而不被选中。也就是说,我使用 JQuery 监视触摸事件,如果用户只是短时间点击文本,我会使用 JQuery 和 CSS 将该文本部分的背景更改为某种颜色,从而突出显示文本而不实际选择它。由于用户尚未实际选择文本 UIMenuController 未显示。这不是我想要的。我想手动显示 UIMenuController 突出显示的文本。因此,当用户点击文本部分时,它应该突出显示,并且 UIMenuController 也应该显示在该点击位置。如何在特定文本部分(实际上是 <span> 的 UIWebView 中实际触发 UIMenuController HTML 元素)而不选择该部分?感谢帮助。

4

1 回答 1

0

在网页中加载html(其中包含contenteditable为true和java脚本函数以获取所选文本的矩形(getRectForSelectedText()))...B使用此方法您将在UIWebView中获取所选文本的框架,以便我们可以呈现UIMenuController这个框架

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *html = [NSString stringWithFormat:@"<script type=\"text/javascript\">function getRectForSelectedText() {var selection = window.getSelection(); var range = selection.getRangeAt(0); var rect = range.getBoundingClientRect(); return '{{' + rect.left + ',' + rect.top + '}, {' + rect.width + ',' + rect.height + '}}';}</script>\"<html><body><div id=\"content\" contenteditable=\"true\" style=\"font-family: Helvetica\">This is out Rich Text Editing View</div></body></html>"];
    [self.viewWeb loadHTMLString:html baseURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@",NSTemporaryDirectory()]]];
}

- (CGRect)cursorRect {
    NSString *str = [self.viewWeb stringByEvaluatingJavaScriptFromString:@"getRectForSelectedText()"];
    return CGRectFromString(str);
}
于 2013-12-09T13:55:17.523 回答