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
)
)
}
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