teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

8

ダイアログもできるようになりました

2017/04/26 23:33

投稿

apple2
apple2

スコア37

title CHANGED
File without changes
body CHANGED
@@ -60,4 +60,19 @@
60
60
  completionHandler()
61
61
  ```
62
62
 
63
- 後は、ダイアログの作成です
63
+ 後は、ダイアログの作成です
64
+ ダイアログもできました
65
+ ```Swift3
66
+ let alert = NSAlert()
67
+ alert.messageText = message
68
+ alert.addButton(withTitle: "OK")
69
+ alert.addButton(withTitle: "Cansel")
70
+ let res = alert.runModal()
71
+ if res == NSAlertFirstButtonReturn {
72
+ completionHandler(true)
73
+ }else{
74
+ completionHandler(false)
75
+ }
76
+ ```
77
+
78
+ 後はインプットパネルです

7

アラートは解決しました

2017/04/26 23:33

投稿

apple2
apple2

スコア37

title CHANGED
File without changes
body CHANGED
@@ -49,4 +49,15 @@
49
49
 
50
50
  ```
51
51
  こうしてみたんですけど、アラートを出してOKを押すとCrashします。
52
- どうやったらJavascriptに結果を渡せるのか分かりません。ググるとiOS版はたくさん情報があるのですがMacOSX版は全然見つかりません
52
+ どうやったらJavascriptに結果を渡せるのか分かりません。ググるとiOS版はたくさん情報があるのですがMacOSX版は全然見つかりません
53
+
54
+ アラートに関しては下記のようにcompletionHandler()を追加することで、うまく動作するようになりました
55
+ ```Swift3
56
+ let alert = NSAlert()
57
+ alert.messageText = message
58
+ alert.addButton(withTitle: "OK")
59
+ let res = alert.runModal()
60
+ completionHandler()
61
+ ```
62
+
63
+ 後は、ダイアログの作成です

6

タイトルを変更しました

2017/04/26 13:08

投稿

apple2
apple2

スコア37

title CHANGED
File without changes
body CHANGED
File without changes

5

タイトルを変更しました

2017/04/26 11:48

投稿

apple2
apple2

スコア37

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,6 @@
1
+ ```ここに言語を入力
2
+ コード
1
- WKWebViewに表示されたJavascriptのアラートなどを表示するものですが
3
+ ```WKWebViewに表示されたJavascriptのアラートなどを表示するものですが
2
4
  iOS版を参考にMacOSX版に書き換えたいと思ってググてみても、なかなか参考になるページが見つかりません
3
5
  みなさんに頼ってばかりで恐縮なのですが教えてください
4
6
 

4

大幅に変えました

2017/04/26 07:45

投稿

apple2
apple2

スコア37

title CHANGED
@@ -1,1 +1,1 @@
1
- iOS版をMacOSX版書き換えたい
1
+ WKWebViewのJavascriptが出すアラート等対応したい
body CHANGED
@@ -3,62 +3,48 @@
3
3
  みなさんに頼ってばかりで恐縮なのですが教えてください
4
4
 
5
5
  ```Swift3
6
- // display alert dialog
6
+ import Cocoa
7
- func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) {
8
- let alertController = UIAlertController(title: "", message: message, preferredStyle: .Alert)
9
- let otherAction = UIAlertAction(title: "OK", style: .Default) {
10
- action in completionHandler()
7
+ import Foundation
11
- }
12
- alertController.addAction(otherAction)
8
+ import WebKit
13
- presentViewController(alertController, animated: true, completion: nil)
14
- }
15
9
 
16
- // display confirm dialog
17
- func webView(webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (Bool) -> Void) {
18
- let alertController = UIAlertController(title: "", message: message, preferredStyle: .Alert)
19
- let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) {
20
- action in completionHandler(false)
21
- }
22
- let okAction = UIAlertAction(title: "OK", style: .Default) {
23
- action in completionHandler(true)
24
- }
25
- alertController.addAction(cancelAction)
26
- alertController.addAction(okAction)
27
- presentViewController(alertController, animated: true, completion: nil)
10
+ class ViewController: NSViewController , WKNavigationDelegate , WKUIDelegate {
28
- }
29
11
 
30
- // display prompt dialog
12
+ @IBOutlet var myWeb: WKWebView!
31
- func webView(webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: (String?) -> Void) {
32
13
 
33
- // variable to keep a reference to UIAlertController
14
+ override func viewDidLoad() {
15
+ super.viewDidLoad()
16
+ myWeb.uiDelegate = self
34
- let alertController = UIAlertController(title: "", message: prompt, preferredStyle: .Alert)
17
+ let url = NSURL(string: "http://www.tagindex.com/javascript/window/alert1.html")
35
-
36
- let okHandler: () -> Void = { handler in
18
+ let req = NSURLRequest(url:url! as URL)
37
- if let textField = alertController.textFields?.first {
38
- completionHandler(textField.text)
39
- } else {
40
- completionHandler("")
19
+ myWeb.load(req as URLRequest!)
41
- }
20
+ }
42
- }
21
+
43
- let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) {
22
+ func webView(_ myWeb: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
44
- action in completionHandler("")
23
+ print("display alert dialog")
45
- }
46
- let okAction = UIAlertAction(title: "OK", style: .Default) {
47
- action in okHandler()
48
- }
49
- alertController.addTextFieldWithConfigurationHandler() { $0.text = defaultText }
50
- alertController.addAction(cancelAction)
51
- alertController.addAction(okAction)
52
- presentViewController(alertController, animated: true, completion: nil)
53
- }
54
- ```
55
-
56
- アラートの部分を
57
- ```Swift3
58
24
  let alert = NSAlert()
59
25
  alert.messageText = message
60
26
  alert.addButton(withTitle: "OK")
61
- alert.runModal()
27
+ let res = alert.runModal()
28
+ if res == NSAlertFirstButtonReturn {
29
+ print("pushed")
30
+ }
31
+ }
32
+
33
+ func webView(_ myWeb: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
34
+ print("display confirm dialog")
35
+ }
36
+
37
+ func webView(_ myWeb: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (String?) -> Void) {
38
+ print("display prompt dialog")
39
+ }
40
+
41
+ override var representedObject: Any? {
42
+ didSet {
43
+ // Update the view, if already loaded.
44
+ }
45
+ }
46
+ }
47
+
62
48
  ```
63
- こうしてみたんですけど、Javascriptに結果渡せないんで
49
+ こうしてみたんですけど、アラート出してOKを押とCrashします。
64
- alert.addAction書き方かりません
50
+ どうやったらJavascriptに結果を渡せるか分かりません。ググるとiOS版はたくさん情報あるのですがMacOSX版は全然見つかりません

3

addActionについて追加しました

2017/04/26 07:44

投稿

apple2
apple2

スコア37

title CHANGED
File without changes
body CHANGED
@@ -57,7 +57,8 @@
57
57
  ```Swift3
58
58
  let alert = NSAlert()
59
59
  alert.messageText = message
60
- alert.addButton(withTitle: "OK")
60
+ alert.addButton(withTitle: "OK")
61
61
  alert.runModal()
62
62
  ```
63
- こうしてみたんですけど、Javascriptに結果を渡せないんです
63
+ こうしてみたんですけど、Javascriptに結果を渡せないんです
64
+ alert.addActionの書き方がわかりません

2

addButtonを足しました

2017/04/25 11:42

投稿

apple2
apple2

スコア37

title CHANGED
File without changes
body CHANGED
@@ -57,6 +57,7 @@
57
57
  ```Swift3
58
58
  let alert = NSAlert()
59
59
  alert.messageText = message
60
+ alert.addButton(withTitle: "OK")
60
61
  alert.runModal()
61
62
  ```
62
63
  こうしてみたんですけど、Javascriptに結果を渡せないんです

1

アラートの部分を追加しました

2017/04/25 11:35

投稿

apple2
apple2

スコア37

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,12 @@
51
51
  alertController.addAction(okAction)
52
52
  presentViewController(alertController, animated: true, completion: nil)
53
53
  }
54
- ```
54
+ ```
55
+
56
+ アラートの部分を
57
+ ```Swift3
58
+ let alert = NSAlert()
59
+ alert.messageText = message
60
+ alert.runModal()
61
+ ```
62
+ こうしてみたんですけど、Javascriptに結果を渡せないんです