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
相关产品推荐
相关产品推荐

