Swift

Swift:override func webViewが便利

webViewをオーバライドしてここで.webarchiveファイル読み込みか、URL読み込みかの処理を入れれば、全体の処理が簡単になることがわかりました。

ところが、盲点もあって、webViewを更新するとき、about:blankがURLとして読み込まれ、これを読み飛ばす必要がありました。調べたら、皆さん、そうされているようです。これまでもこのオーバライドは入れていたのですが、気がつきませんでした。

  • 下記の処理は、about:blankでreturnになっていますが、これはまずいです。about:blankでないときだけxbURL.stringValue  = xbWebView.mainFrameURでURLを設定すれば矛盾がなくなります。

主な処理:

  • webViewからそのページのURLを獲得して設定する。
  • webViewのタイトルを獲得して設定する。
  • URL(http)読み込みなら編集可能にする。
  • 編集可能な場合、UI表示を変更する。

不思議な現象:

  • URLによっては、読み込みがObjective-Cと異なり少しおかしいものがあります。取り急ぎ、サンプルプログラムを作って再確認しますが、Yosemite正式リリースまで待たないといけないことなのでしょうか?

override func webView(sender: WebView!, didFinishLoadForFrame frame: WebFrame!) {
if xbWebView.mainFrameURL as String == “about:blank” {
return
}
ExecResetButton()
var wURL:String     = xbWebView.mainFrameURL as String
if countElements(wURL) > 4 &&  wURL.substringToIndex(4) != “file” {
xbURL.stringValue       = xbWebView.mainFrameURL 
xbURL2.stringValue      = “”
xbURL.textColor         = NSColor.blueColor()
xbURL.backgroundColor   = NSColor.controlLightHighlightColor()
xbFileName.backgroundColor = NSColor.controlLightHighlightColor()
xbWebView.editable      = true 
ExecSetTitle()  
} else {
xbURL.stringValue       = ffSort
xbURL2.stringValue      = ffURL
xbURL2.textColor        = NSColor.blueColor()
xbURL.textColor         = NSColor.redColor()
xbURL.backgroundColor   = NSColor.controlHighlightColor()
xbFileName.backgroundColor = NSColor.controlHighlightColor()
xbWebView.editable      = false
ExecSetTitle()
}
}

Categories: Swift, 技術