[英]Scroll to anchor in webView
我們想打開一個在視圖中打開了特定位置的WebView。 因此,在顯示錨之前,我們想滾動到錨或跳到錨。
我們試圖在viewWillAppear
內部執行一個javascript,但是它不起作用。 如果我們在viewDidAppear
執行它,我們將跳轉到錨點,這不是有效的解決方案。
WebContentView(具有包含單個WebView的UIView
簡單Storyboard):
class WebContentViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
var fileName: String?
var screenName: String?
override func viewDidLoad() {
super.viewDidLoad()
webView.backgroundColor = UIColor.white
let url = URLRequest(url: Bundle.main.url(forResource: fileName, withExtension: "html")!)
webView.loadRequest(url);
webView.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let screenName = screenName else {
return
}
webView.stringByEvaluatingJavaScript(from: "window.location.href = '#2-einsatz-von-google-analytics';")
}
override func viewDidAppear(_ animated: Bool) {
//webView.stringByEvaluatingJavaScript(from: "window.location.href = '#2-einsatz-von-google-analytics';") //creates a jump instead of a scrole
}
}
嘗試過的解決方案和已知問題:
scrollTo(hash) {location.hash = "#" + hash;}; scrollTo("anchor");
scrollTo(hash) {location.hash = "#" + hash;}; scrollTo("anchor");
如何使用jQuery或Javascript將HTML頁面滾動到給定的錨點? 我們如何才能完成“平滑”滾動到錨點或在可見之前進行跳轉?
如果您熟悉UIScrollView ,則應該知道可以使用setContentOffset方法。 默認情況下, UIWebView具有scrollView屬性:
var scrollView:UIScrollView與Web視圖關聯的滾動視圖。
因此,您可以做的-例如-是:
webView.scrollView.setContentOffset(CGPoint(x: 0, y: 100), animated: true)
另外 ,我認為您應該在webView完成加載后使用它,可以通過實現UIWebViewDelegate - webViewDidFinishLoad來實現:
func webViewDidFinishLoad(_ webView: UIWebView) {
webView.scrollView.setContentOffset(CGPoint(x: 0, y: 100), animated: true)
}
希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.