如何在UIWebView中使用stringByEvaluatingJavaScriptFromString而不是Swift中的performSelectorOnMainThread显示JavaScript警报对话框?

如何在UIWebView中使用stringByEvaluatingJavaScriptFromString而不是Swift中的performSelectorOnMainThread显示JavaScript警报对话框?,javascript,ios,swift,performselector,stringbyevaluatingjavascr,Javascript,Ios,Swift,Performselector,Stringbyevaluatingjavascr,在Objective-C中,以下代码在viewDidLoad中工作: [self.myWebView performSelectorOnMainThread: @selector(stringByEvaluatingJavaScriptFromString:) withObject:@"alert('Test')" waitUntilDone:NO]; 该代码建议如下: 它说,performselectornmainthread与stringByEvaluatingJavaScriptFro

在Objective-C中,以下代码在
viewDidLoad
中工作:

[self.myWebView performSelectorOnMainThread:
@selector(stringByEvaluatingJavaScriptFromString:)
withObject:@"alert('Test')" waitUntilDone:NO];
该代码建议如下:

它说,
performselectornmainthread
stringByEvaluatingJavaScriptFromString
一起工作。这将显示一个警报对话框,单击“确定”按钮可关闭该对话框。但是,
dispatch\u async
不工作,对话框冻结,无法按下OK按钮

问题是:如何使上述对话功能在Swift中工作?如何将代码转换为Swift

问题是Objective-C中使用的
performSelectorOnMainThread
在Swift中不可用

如果我在
viewDidLoad
中直接调用下面的代码,设备将在启动屏幕上挂起:

override func viewDidLoad() {
    super.viewDidLoad()
    myWebView.stringByEvaluatingJavaScriptFromString("alert('test')");
我已经尝试了执行选择线程,但结果要么是冻结的启动屏幕,要么是冻结的警报对话框


有人能告诉我如何调用
stringByEvaluatingJavaScriptFromString
以在Swift中显示JavaScript警报对话框吗?谢谢。

我已通过加载网页并在
webviewdiffinishload
中调用
stringByEvaluatingJavaScriptFromString
解决了此问题

解决方案如下:

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var myWebView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        var myPath = NSBundle.mainBundle().pathForResource("index", ofType: "html")
        myWebView.delegate = self
        myWebView.loadRequest(NSURLRequest(URL: NSURL(string: myPath!)!))
    }

    func webViewDidFinishLoad(webView: UIWebView) {
        myWebView.stringByEvaluatingJavaScriptFromString("alert('Hello')")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}