Я портирую приложение для iPad на MacCatalyst. Я могу программно запустить второе «окно» и добавить к нему WKWebView в качестве подпредставления (экран справки). Верхняя часть содержимого отображается вместе с индикатором прокрутки. Тем не менее, никакие действия мыши или клавиатуры не позволяют прокрутить. Не уверен, как вы перемещаете «фокус» между двумя окнами, если это на самом деле проблема. Код для генерации WKWebView и всех его настроек совпадает с кодом для версии для iPad.
ОБНОВЛЕНИЕ
в SceneDelegate -
import Foundation
import Cartography
class HelpSceneDelegate: UIResponder, UISceneDelegate {
var window: UIWindow?
var helpSession: UISceneSession?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let sceneWindow = (scene as? UIWindowScene) else { return }
helpSession = session
window = UIWindow(frame: sceneWindow.coordinateSpace.bounds)
window?.windowScene = sceneWindow
window?.backgroundColor = .white
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
createHelp()
}
func createHelp() {
let app = UIApplication.shared.delegate as! AppDelegate
app.infoWebViewVC!.loadView()
delay(0.30) {
app.infoWebViewVC?.viewDidLoad()
app.infoWebViewVC?.infoWebView?.alpha = 1.0
let webView = app.infoWebViewVC!.infoWebView!
self.window?.addSubview(webView)
let backButton = UIButton(frame: CGRect(0,50,20,20))
backButton.setImage(#imageLiteral(resourceName: "back_filled"), for: .normal)
backButton.addTarget(self, action: #selector(self.onBack), for: .touchUpInside)
self.window?.addSubview(backButton)
constrain(webView, backButton) { w, b in
w.top == w.superview!.safeAreaLayoutGuide.top + 20
w.bottom == w.superview!.safeAreaLayoutGuide.bottom - 20
w.centerX == w.superview!.centerX
w.width == w.superview!.width*0.75
b.centerY == w.superview!.centerY
b.leading == b.superview!.safeAreaLayoutGuide.leading + 5
b.width == 40
b.height == 40
}
}
}
@objc
func onBack(_ sender: UIButton) -> () {
UIApplication.shared.requestSceneSessionDestruction(helpSession!, options: nil)
}
Если поставить createHelp()
перед window?.makeKeyAndVisible()
, то окно не реагирует ни на какие события (касаяськнопка или прокрутка). Обратите внимание, как вы закрываете окно в мире UIScene. Я использую картографию для управления макетом. Слишком много вложено в него, чтобы перейти на SwiftUI.