我正在使用最新的SDK和XCode 4.2开发iOS应用程序。
我想在UIWebview中搜索文本并滚动到找到的第一个文本。
我正在使用本教程查找文字:http://zaldzbugz.posterous.com/how-to-search-a-string-inside-uiwebview
如何滚动到找到的第一个文字?
答案 0 :(得分:5)
让我们一步一步走。
<强>突出显示强>
您使用的代码包含以下代码段。
var span = document.createElement("span");
var text = document.createTextNode(value.substr(idx,keyword.length));
span.appendChild(text);
span.setAttribute("class","uiWebviewHighlight");
span.style.backgroundColor="black";
span.style.color="white";
我们需要移动一个id来移动。所以按如下方式添加id,
var span = document.createElement("span");
var text = document.createTextNode(value.substr(idx,keyword.length));
span.appendChild(text);
span.setAttribute("id","SEARCH WORD");
span.setAttribute("class","uiWebviewHighlight");
span.style.backgroundColor="black";
span.style.color="white";
转移到第一次出现。
在“Webview didload”中使用以下javascript移至第一次出现。
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('SEARCH WORD').scrollIntoView()];
希望这有用。
答案 1 :(得分:2)
查看您用于突出显示的教程中的最后一条评论。 http://zaldzbugz.posterous.com/how-to-search-a-string-inside-uiwebview
在使用span
进行所有操作后,将此代码块添加到UIWebViewSearch.js中//old code
text = document.createTextNode(value.substr(idx+keyword.length));
element.deleteData(idx, value.length - idx);
var next = element.nextSibling;
element.parentNode.insertBefore(span, next);
element.parentNode.insertBefore(text, next);
element = text;
//new portion of code
if (uiWebview_SearchResultCount == 1)
{
var desiredHeight = span.offsetTop - 140;
window.scrollTo(0,desiredHeight);
}
我在iPhone模拟器4.3和5.0上检查了这个解决方案。
答案 2 :(得分:1)
您可以滚动到此修改时找到的最顶层文本:
// >=1
if (uiWebview_SearchResultCount >= 1)
{
var desiredHeight = span.offsetTop - 140;
window.scrollTo(0,desiredHeight);
}