gpt4 book ai didi

swift - Cocoa .scrollToEndOfDocument 在第一次尝试后停止工作

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:57 31 4
gpt4 key购买 nike

我正在编写一个带有加载网站的 WebView 的小型 MacOS 程序。这是当您滚动到底部时自动加载更多内容的网站之一。作为过期,我正在尝试编写将不断滚动到页面底部的代码,以便加载更多页面等等。

我目前的情况是这样的:

scrollToBottomTotalTimes = 10
self.myWebView.mainFrame.load(NSURLRequest(url: NSURL(string: urlString)! as URL) as URLRequest!)

func webView(_ sender: WebView!, didFinishLoadFor frame: WebFrame!) {

var scrollToBottomCurrentTimes = 0
while scrollToBottomCurrentTimes != scrollToBottomTotalTimes {
scrollToBottomCurrentTimes += 1
self.myWebView.scrollToEndOfDocument(self)
sleep(2) //give the page some time to load
}
}

一次效果很好:页面加载,滚动到底部,然后加载更多页面。

但是在那之后,WebView 不再滚动,尽管页面有足够的时间重新加载。页面上的位置与之前完全相同。

我感觉 .scrollToEndOfDocument(self) 似乎没有检测到网页变长的事实。

有没有办法“更新”.scrollToEndOfDocument(self) 以便它知道页面的新底部在哪里?

谢谢!

最佳答案

在我看来,您使用了错误的方法。假设有新内容到达,您可能会收到多个对 didFinishLoadFor 的请求。但是,您在方法内部进行循环,并在方法内部进行 sleep ,这使得您阻塞主队列并禁用事件机制。

我建议您使用 Grand Central Dispatch (GCD) 设置一个计时器事件,然后从计时器事件中触发滚动事件。请注意,您必须在主队列中进行滚动,并且计时器事件不在主队列中。只需查看关于 GCD 的文档。参见 https://developer.apple.com/reference/dispatch .

关于swift - Cocoa .scrollToEndOfDocument 在第一次尝试后停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39987453/

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