執行環境:MacBook Pro + macOS Mojava 10.14.5 + Xcode 10.2.1
事情是這樣的,我用 Xcode 製作一個單純的 App,只是放入一個 WebKit View 元件(底下簡稱 WKWebView ),在 Xcode 上執行並沒問題。
如下圖,白框是 WKWebView 元件,左邊的 Windows 是執行的畫面。
然而,我想直接執行 Build 出來的 App,問題就來了。
如下圖,我先選紅圈 ①,在藍圈 ② 可以看到 App 的位置,點下之後就可以看到綠圈 ③ 的 App 檔案,直接執行它,就看到黃圈 ④ 的錯誤報告。
我測試過其他簡單的元件如 Label、Button 則沒有這個問題,就 WKWebView 才會如此。
真的是查了許多資料,總算看到一篇說 Xcode 9 用故事版(storyboard)創建 WKWebView 會有問題,在 iOS 11 就沒有問題了,在 iOS 11 之前的版本要用程式自行建置才行。
我想 macOS 也是有同樣的問題吧,難怪 WKWebView 的官方說明的確有提供一段建置的程式碼,不過好像是 iOS 用的,所以我無法測試出來。
後來我又在別的地方找到一段 macOS 用的 Swift 碼,終於測試成功了。
程式碼如下:
import Cocoa
import WebKit
class ViewController: NSViewController, WKUIDelegate, WKNavigationDelegate {
let webView = WKWebView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.webView.uiDelegate = self
self.webView.navigationDelegate = self
webView.frame = CGRect(x:0,y:0,width:400,height: 270)
view.addSubview(webView)
let myURL=URL(string: "https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
黃色背景色的文字是自行加上去的,其他程式碼則是專案一開始就有的。
至於紅色的部份,我試過移走也可以執行,不過我還不知道那些的作用。
底下是執行的畫面:
- 瀏覽次數:9572
發表新回應