gpt4 book ai didi

UIWebView scrollTo 受阻于返回顶部

转载 作者:行者123 更新时间:2023-12-04 06:14:44 25 4
gpt4 key购买 nike

我在 iPad 的 Objective-c 项目中有一个带有 UIWebView 的 ViewController。
当我添加 html(使用 loadHtmlString)时,我尝试保持它在 loadHtml 之前的滚动位置,但我无能为力,它返回到顶部。
这是我使用的行:

scrollPosition = [[webView stringByEvaluatingJavaScriptFromString: @"scrollY"] intValue];
[webView loadHTMLString:html baseURL:nil];
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0, %d);",scrollPosition]];

我在代码的不同位置测试了值“scrollY”
并且它保持在我想要的值 scrollPosition ,但是当它最终显示在屏幕上时,WebView 始终位于顶部(scrollY 值然后为 0)。
有没有人可以帮助我弄清楚为什么会发生这种情况?

我也在 StackOverflow 上在线检查了几个小时的答案。
我尝试了不同的解决方案(比如在我的 webview 中添加 JavaScript “onclick="scroll(); return false;”,但无济于事。
我尝试自行委派 webView 并更新 webViewDidFinishLoad 中的 scrollTo,但似乎未调用 webViewDidFinishLoad(未到达断点),尽管我确实在界面中的 .h 和 ViewDidLoad 的 .m 中添加了以下行: webView.delegate=自己;

预先感谢您的任何帮助。

最佳答案

我意识到重新编译后,在 html 更新后调用了 webViewDidFinishLoad,然后我可以滚动到正确的位置。
对于我在 viewDidLoad 中使用的自我委托(delegate),它看起来是这样的:

webview.delegate = self;

在更新 webView 中的 html 之前,我使用代码计算滚动位置:
        scrollPosition = [[wbView stringByEvaluatingJavaScriptFromString: @"scrollY"] intValue];

然后,一旦 webView 有更新的 html,为了回到这个位置,我然​​后使用:
-(void) webViewDidFinishLoad:(UIWebView *)wbView {
[wbView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0, %d);",scrollPosition]];
}

我通过下面的帖子找到了部分解决方案,Pawel 的回答是:
How can I scroll programmatically to the bottom in a uiwebview

关于UIWebView scrollTo 受阻于返回顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7399811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com