Objective-C では、次のコードが で機能しviewDidLoad
ます。
[self.myWebView performSelectorOnMainThread:
@selector(stringByEvaluatingJavaScriptFromString:)
withObject:@"alert('Test')" waitUntilDone:NO];
このコードは、次のように提案されています。
UIWebView stringByEvaluatingJavaScriptFromString は、GCD を使用して呼び出すと、iOS5.0/5.1 でハングします。
performSelectorOnMainThread
で動作すると言われていstringByEvaluatingJavaScriptFromString
ます。これにより警告ダイアログが表示され、[OK] ボタンをクリックして閉じることができます。ただし、dispatch_async
動作せず、ダイアログがフリーズし、[OK] ボタンを押すことができません。
問題は、上記のダイアログ機能を Swift で機能させる方法です。コードを Swift に変換する方法は?
問題はperformSelectorOnMainThread
、Objective-C で使用されているものが Swift で使用できないことです。
で以下のコードを直接呼び出すとviewDidLoad
、デバイスは LaunchScreen で一時停止されます。
override func viewDidLoad() {
super.viewDidLoad()
myWebView.stringByEvaluatingJavaScriptFromString("alert('test')");
代替ソリューションを試しましたperformSelectorOnMainThread
が、結果は起動画面がフリーズするか、警告ダイアログがフリーズします。
stringByEvaluatingJavaScriptFromString
Swift で JavaScript 警告ダイアログを表示するために呼び出す方法を教えてください。ありがとうございました。