You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI加载YouTube视频报错:some UIView无scrollView成员

解决SwiftUI中WKWebView的scrollView和load调用错误

错误原因很明确:你在makeUIView里返回的是WKWebView,但声明的返回类型是some UIView,UIView本身没有scrollView属性和load方法,所以编译器无法识别这些成员。

直接按以下方式修正代码:

  • 将makeUIView的返回类型从some UIView改为WKWebView,让updateUIView中的uiView被正确识别为WKWebView类型
  • 补充baseUrl的具体定义(比如YouTube嵌入地址)
  • 完善load方法的调用逻辑,传入合法的URLRequest
  • 处理videoId和URL拼接可能的nil情况

修正后的完整代码:

import SwiftUI
import WebKit

struct Video: UIViewRepresentable {
    let videoId: String?
    private let baseUrl = "https://www.youtube.com/embed/"
    
    func makeUIView(context: Context) -> WKWebView {
        WKWebView()
    }
    
    func updateUIView(_ uiView: WKWebView, context: Context) {
        guard let ytId = videoId, let ytUrl = URL(string: baseUrl + ytId) else { return }
        
        // 示例:禁用webview滚动,可根据需求调整
        uiView.scrollView.isScrollEnabled = false
        
        let request = URLRequest(url: ytUrl)
        uiView.load(request)
    }
}

这样修改后,编译器就能正确识别WKWebView的scrollView属性和load方法,错误也就解决了。

内容的提问来源于stack exchange,提问作者Mark George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:12:04