Skip to content

Commit

Permalink
Rendering of the openHAB ui in a Webview on an iPad was way to small.… (
Browse files Browse the repository at this point in the history
#806)

* Rendering of the openHAB ui in a Webview on an iPad was way to small. Safari however renders the openHAB UI correctly, this makes our webview behave like Safari.  Changing the user agent string is the only way to acheive this.

Signed-off-by: Dan Cunningham <[email protected]>

* Formatting

Signed-off-by: Dan Cunningham <[email protected]>

---------

Signed-off-by: Dan Cunningham <[email protected]>
  • Loading branch information
digitaldan authored Sep 11, 2024
1 parent 0cd05cd commit 8c8025f
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions openHAB/OpenHABWebViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ class OpenHABWebViewController: OpenHABViewController {
// adds: window.webkit.messageHandlers.xxxx.postMessage to JS env
config.userContentController.add(self, name: "Native")
config.userContentController.addUserScript(WKUserScript(source: js, injectionTime: .atDocumentStart, forMainFrameOnly: false))

let webView = WKWebView(frame: view.bounds, configuration: config)
// Alow rotation of webview
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
Expand All @@ -233,6 +234,10 @@ class OpenHABWebViewController: OpenHABViewController {
// support dark mode and avoid white flashing when loading
webView.isOpaque = false
webView.backgroundColor = UIColor.clear
if UIDevice.current.userInterfaceIdiom == .pad {
// since ios 13 Safari sets the user agent to desktop mode on iPads so the view renders correctly with larger screens
webView.customUserAgent = "Mozilla/5.0 (iPad; CPU OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1"
}
if #available(iOS 16.4, *) {
webView.isInspectable = true
}
Expand Down

0 comments on commit 8c8025f

Please sign in to comment.