ioscompose-multiplatformcompose

Compose Multiplatform WKWebView iOS scoll not working


I am trying to set scrolling on WKWebView used in Kotlin Multiplatform, but it never scrolls. Any Ideas please?

To scroll, the documentation says use:

scrollView.scrollEnabled = true
scrollView.bounces = true 

But this does not work.

Full code below

import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.interop.UIKitView
import androidx.compose.ui.viewinterop.UIKitInteropProperties
import androidx.compose.ui.viewinterop.UIKitView
import kotlinx.cinterop.*
import platform.Foundation.NSURL
import platform.WebKit.WKWebView
import platform.WebKit.WKWebViewConfiguration
import platform.CoreGraphics.CGRectMake

@OptIn(ExperimentalForeignApi::class)
@Composable
actual fun WebViewContent(url: String) {
    val webViewConfig = remember { WKWebViewConfiguration() }

    UIKitView(
        factory = {
            WKWebView(
                frame = CGRectMake(0.0, 0.0, 0.0, 0.0),
                configuration = webViewConfig
            ).apply {
                // Load the URL
                val nsUrl = NSURL(string = url)
                loadRequest(platform.Foundation.NSURLRequest(uRL = nsUrl))

                scrollView.scrollEnabled = true
                scrollView.bounces = true
            }
        },
        modifier = Modifier.fillMaxSize(),
        update = { webView ->
            // Update logic when the URL changes
            val nsUrl = NSURL(string = url)
            (webView as WKWebView).loadRequest(platform.Foundation.NSURLRequest(uRL = nsUrl))
        },
        properties = UIKitInteropProperties(
            isInteractive = true,
            isNativeAccessibilityEnabled = true
        )
    )
}

Solution

  • I was able to fix this by updating Compose Multiplatform to the stable version 1.8.0 released yesterday:

    https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.8.0

    SImilar issue here: https://github.com/JetBrains/compose-multiplatform/issues/4818