Явное внедрение прослушивателя событий в веб-просмотр - PullRequest
0 голосов
/ 04 марта 2019
static func getWebKitView(uiController : ViewController, uiView : UIView, handlerName : String) -> WKWebView {
    let controller  = WKUserContentController()
    controller.add(uiController, name: handlerName)

    let config = WKWebViewConfiguration()
    config.userContentController = controller

    let scriptSource = """
        document.addEventListener('touchstart', function() { console.log('touchstart from Swift') })
        """
    let script = WKUserScript(source: scriptSource, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
    controller.addUserScript(script)

    let webKitView = WKWebView(frame: .init(x: 0.0, y: 0.0, width: uiView.frame.width, height: uiView.frame.height), configuration: config)
    webKitView.scrollView.isScrollEnabled = false
    webKitView.scrollView.contentSize = uiView.frame.size
    // webKitView.isUserInteractionEnabled = false
    return webKitView
}

Как может помочь добавление этого scriptSource?

Я сделал карусель в своем приложении javascript.Когда я попытался пролистать изображения в нем.Я мог только перейти ко 2-му изображению, и дальнейшее считывание не работало.Но когда я добавил scriptSource, эта проблема разрешилась.

Я хочу знать, что на самом деле произошло, когда я добавил этот фрагмент кода, и почему без этого мой js-код не прослушивал событие touchmove.

Я пытался изменить этот скрипт

let scriptSource = """
        document.addEventListener('touchstart', function() { console.log('touchstart from Swift') })
        """

с помощью этого скрипта

let scriptSource = """
        document.getElementByClassName('carousel-container').addEventListener('touchstart', function() { console.log('touchstart from Swift') })
        """

Но на этот раз он тоже не работал.И вопрос остается прежним.

...