[SwitUI]WebView-ハングルのURLを含むフロート
📌 開始:WebViewとは?
アプリケーションを使ってWebページを開くときに他のブラウザアプリケーションを開くことがよくありますが、使用しているアプリケーション内でネットワークウィンドウを開く場合もあります.これがWebViewです.例えば、韓国人なら一度使った「KakaoTalk」でページを開くとWebViewが出てくる.
💻 WebViewとURL Encode
基本WebView実装
基本WebViewインプリメンテーションコードは、お客様の位置を参照しています:SWIFTUI WebViewの生成(コード)
WebKitを使用してWebViewを実装するには、アプリケーションでインターネット使用を設定する必要があります.
まだない場合は、次の記事の「プリセット-プロジェクト内のインターネット使用設定」タブを参照して設定します.
MVVMモードに従ってHTTPリクエストをインポートしたサーバデータをアプリケーションに適用
基本WebViewを実装するコードは次のとおりです.
import SwiftUI
import WebKit
struct MyWebView: UIViewRepresentable {
var urlToLoad: String
//ui view 만들기
func makeUIView(context: Context) -> WKWebView {
//unwrapping
guard let url = URL(string: self.urlToLoad) else {
return WKWebView()
}
//웹뷰 인스턴스 생성
let webView = WKWebView()
//웹뷰를 로드한다
webView.load(URLRequest(url: url))
return webView
}
//업데이트 ui view
func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<MyWebView>) {
}
}
WebKitヘッダをインポートし、構造をUIViewRepresentableと宣言し、渡されたurlを使用してWebビューインスタンスを作成/ロードします.に質問
このコードを使用してWebViewを実装すると、ほとんどのURLは問題なくWebページを表示できますが、一部のページはどんなに待っても表示されず、ページに表示されないURLには「ハングル」が含まれています.
コード的にはURL(string:)で解包されており、英語や数字などで指定された文字しか認識できないそうです.ハングルは認識できません.
したがって、urlにハングルが含まれている場合は、urlのすべてのページを正しくロードするには、それを符号化する必要があります.
URLコード
前の位置で作成されたRoot/Extensions/URL+Extensions.swiftにはまた関数が追加されました.
static func encodeURL(_ url: String) -> URL? {
let encodedStr = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
return URL(string: encodedStr)!
}
ウェブアドレスをString形式で渡すと、ハングルもURL形式で返す関数として符号化できます.この関数を使用して、次のようにデフォルトのWebView実装コードを変更します.
import SwiftUI
import WebKit
struct MyWebView: UIViewRepresentable {
// ===CHANGED===
var urlToEncode: String
//ui view 만들기
func makeUIView(context: Context) -> WKWebView {
// ===CHANGED===
//unwrapping
// guard let url = URL(string: self.urlToLoad) else {
// return WKWebView()
// }
// ===CHANGED===
guard let urlToLoad = URL.encodeURL(urlToEncode) else {
return WKWebView()
}
//웹뷰 인스턴스 생성
let webView = WKWebView()
//웹뷰를 로드한다
webView.load(URLRequest(url: urlToLoad))
return webView
}
//업데이트 ui view
func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<MyWebView>) {
}
}
url部分を設定するコードだけが上にあるURL+Extensionsです.swiftで生成したencodeURL()関数を用いて変換した.結果
ハングルを含むWebサイトの準備(https://www.16personalities.com/ko/無料-性格-タイプ-チェック)
シミュレータを実行すると、次のページが正常にロードされます.
📌 の最後の部分
いつも勉強や新しい知識を得たときに感じていますが、あることを全く知らないときは、本当に遠く、迷っています.少しでも知っていれば、大したことはありません.
まだ人生をたくさん経験したことはありませんが、生活の中で経験したこともそうです.
経験したことのないものを心配するのは、时にはただ怖いだけだ.しかし、ほとんどは過去に大したことはなかった.
今日の結論は、
未知なる世界を恐れるな!
printf("Thank You!\n");
printf("Posted by Thirsty Developer\n");
Reference
この問題について([SwitUI]WebView-ハングルのURLを含むフロート), 我々は、より多くの情報をここで見つけました https://velog.io/@jyw3927/SwiftUI-WebView-한글이-포함된-URL-띄우기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol