2017-08-23 24 views
0

私は迅速なアプリケーションからWebビューを起動しています。 Webビューからは、ボタンをクリックするだけですぐに機能を呼び出すことができます。私はコードサンプルhereを見つけました。javascript web viewからswift関数を呼び出す方法

ボタンを押しても何も起こりません。私は、WebビューにロードしていますURLはここhttps://test-swift-js.github.io

あるコードです:

import Cocoa 
import WebKit 

class ViewController : NSViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override var representedObject: Any? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 

    var webView:WebView! 

    @IBAction func mybutton(_ sender: Any) { 
     let url = URL(string: "https://test-swift-js.github.io") 
     let request = URLRequest(url: url!) 
     webView = WebView(frame: NSRect(x: 0, y: 0, width: 1000, height: 1000)) 
     webView.mainFrame.load(request) 
     self.view.addSubview(webView) 
    } 

    func webView(webView: WebView!, didClearWindowObject windowObject: WebScriptObject!, forFrame frame: WebFrame!) { 
     windowObject.setValue(self, forKey: "interOp") 
    } 

    //The name used to represent the Swift function name in Javascript. 
    class func webScriptNameForSelector(aSelector: Selector) -> String! 
    { 
     if aSelector == "callSwift:" 
     { 
      return "callSwift" 
     } 
     else 
     { 
      return nil 
     } 
    } 
    class func isSelectorExcludedFromWebScript(aSelector: Selector) -> Bool 
    { 
     return false 
    } 
    func callSwift(message:String) 
    { 
     var alert = NSAlert() 
     alert.messageText = message 
     alert.alertStyle = NSAlertStyle.informational 
     alert.beginSheetModal(for: self.view.window!, completionHandler: nil) 
    } 
} 
+0

(https://stackoverflow.com/questions/36139062/call-swift-function-with-javascript-using-uiwebview)のUIWebViewを使用して、JavaScriptを使用して迅速関数を呼び出し] – mgyky

+0

号の可能性のある重複リンクしていますあなたはiOSのために与えた。私はMac OS Xのコードを望んでいた。 – PRP

答えて

-1

たぶん、あなたは、デリゲートを設定するのを忘れ。 enter image description here

関連する問題