質問編集履歴

8

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

2017/04/26 23:33

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -123,3 +123,33 @@
123
123
 
124
124
 
125
125
  後は、ダイアログの作成です
126
+
127
+ ダイアログもできました
128
+
129
+ ```Swift3
130
+
131
+ let alert = NSAlert()
132
+
133
+ alert.messageText = message
134
+
135
+ alert.addButton(withTitle: "OK")
136
+
137
+ alert.addButton(withTitle: "Cansel")
138
+
139
+ let res = alert.runModal()
140
+
141
+ if res == NSAlertFirstButtonReturn {
142
+
143
+ completionHandler(true)
144
+
145
+ }else{
146
+
147
+ completionHandler(false)
148
+
149
+ }
150
+
151
+ ```
152
+
153
+
154
+
155
+ 後はインプットパネルです

7

アラートは解決しました

2017/04/26 23:33

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -101,3 +101,25 @@
101
101
  こうしてみたんですけど、アラートを出してOKを押すとCrashします。
102
102
 
103
103
  どうやったらJavascriptに結果を渡せるのか分かりません。ググるとiOS版はたくさん情報があるのですがMacOSX版は全然見つかりません
104
+
105
+
106
+
107
+ アラートに関しては下記のようにcompletionHandler()を追加することで、うまく動作するようになりました
108
+
109
+ ```Swift3
110
+
111
+ let alert = NSAlert()
112
+
113
+ alert.messageText = message
114
+
115
+ alert.addButton(withTitle: "OK")
116
+
117
+ let res = alert.runModal()
118
+
119
+ completionHandler()
120
+
121
+ ```
122
+
123
+
124
+
125
+ 後は、ダイアログの作成です

6

タイトルを変更しました

2017/04/26 13:08

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
File without changes

5

タイトルを変更しました

2017/04/26 11:48

投稿

apple2
apple2

スコア37

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

4

大幅に変えました

2017/04/26 07:45

投稿

apple2
apple2

スコア37

test CHANGED
@@ -1 +1 @@
1
- iOS版をMacOSX版書き換えたい
1
+ WKWebViewのJavascriptが出すアラート等対応したい
test CHANGED
@@ -8,109 +8,41 @@
8
8
 
9
9
  ```Swift3
10
10
 
11
- // display alert dialog
11
+ import Cocoa
12
12
 
13
- func webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) {
13
+ import Foundation
14
14
 
15
- let alertController = UIAlertController(title: "", message: message, preferredStyle: .Alert)
16
-
17
- let otherAction = UIAlertAction(title: "OK", style: .Default) {
18
-
19
- action in completionHandler()
15
+ import WebKit
20
-
21
- }
22
-
23
- alertController.addAction(otherAction)
24
-
25
- presentViewController(alertController, animated: true, completion: nil)
26
-
27
- }
28
16
 
29
17
 
30
18
 
31
- // display confirm dialog
32
-
33
- func webView(webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: (Bool) -> Void) {
34
-
35
- let alertController = UIAlertController(title: "", message: message, preferredStyle: .Alert)
36
-
37
- let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) {
38
-
39
- action in completionHandler(false)
40
-
41
- }
42
-
43
- let okAction = UIAlertAction(title: "OK", style: .Default) {
44
-
45
- action in completionHandler(true)
46
-
47
- }
48
-
49
- alertController.addAction(cancelAction)
50
-
51
- alertController.addAction(okAction)
52
-
53
- presentViewController(alertController, animated: true, completion: nil)
19
+ class ViewController: NSViewController , WKNavigationDelegate , WKUIDelegate {
54
-
55
- }
56
20
 
57
21
 
58
22
 
59
- // display prompt dialog
23
+ @IBOutlet var myWeb: WKWebView!
60
-
61
- func webView(webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: (String?) -> Void) {
62
24
 
63
25
 
64
26
 
65
- // variable to keep a reference to UIAlertController
27
+ override func viewDidLoad() {
66
28
 
67
- let alertController = UIAlertController(title: "", message: prompt, preferredStyle: .Alert)
29
+ super.viewDidLoad()
68
30
 
31
+ myWeb.uiDelegate = self
69
32
 
33
+ let url = NSURL(string: "http://www.tagindex.com/javascript/window/alert1.html")
70
34
 
71
- let okHandler: () -> Void = { handler in
35
+ let req = NSURLRequest(url:url! as URL)
72
36
 
73
- if let textField = alertController.textFields?.first {
37
+ myWeb.load(req as URLRequest!)
74
38
 
75
- completionHandler(textField.text)
39
+ }
76
40
 
77
- } else {
41
+
78
42
 
79
- completionHandler("")
43
+ func webView(_ myWeb: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
80
44
 
81
- }
82
-
83
- }
84
-
85
- let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) {
86
-
87
- action in completionHandler("")
45
+ print("display alert dialog")
88
-
89
- }
90
-
91
- let okAction = UIAlertAction(title: "OK", style: .Default) {
92
-
93
- action in okHandler()
94
-
95
- }
96
-
97
- alertController.addTextFieldWithConfigurationHandler() { $0.text = defaultText }
98
-
99
- alertController.addAction(cancelAction)
100
-
101
- alertController.addAction(okAction)
102
-
103
- presentViewController(alertController, animated: true, completion: nil)
104
-
105
- }
106
-
107
- ```
108
-
109
-
110
-
111
- アラートの部分を
112
-
113
- ```Swift3
114
46
 
115
47
  let alert = NSAlert()
116
48
 
@@ -118,10 +50,50 @@
118
50
 
119
51
  alert.addButton(withTitle: "OK")
120
52
 
121
- alert.runModal()
53
+ let res = alert.runModal()
54
+
55
+ if res == NSAlertFirstButtonReturn {
56
+
57
+ print("pushed")
58
+
59
+ }
60
+
61
+ }
62
+
63
+
64
+
65
+ func webView(_ myWeb: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
66
+
67
+ print("display confirm dialog")
68
+
69
+ }
70
+
71
+
72
+
73
+ func webView(_ myWeb: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (String?) -> Void) {
74
+
75
+ print("display prompt dialog")
76
+
77
+ }
78
+
79
+
80
+
81
+ override var representedObject: Any? {
82
+
83
+ didSet {
84
+
85
+ // Update the view, if already loaded.
86
+
87
+ }
88
+
89
+ }
90
+
91
+ }
92
+
93
+
122
94
 
123
95
  ```
124
96
 
125
- こうしてみたんですけど、Javascriptに結果を渡せないんで
97
+ こうしてみたんですけど、アラートを出してOKを押すとCrashしま
126
98
 
127
- alert.addAction書き方かりません
99
+ どうやったらJavascriptに結果を渡せるのか分かりません。ググるとiOS版はたくさん情報があるですMacOSX版は全然見つかりません

3

addActionについて追加しました

2017/04/26 07:44

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -116,10 +116,12 @@
116
116
 
117
117
  alert.messageText = message
118
118
 
119
- alert.addButton(withTitle: "OK")
119
+ alert.addButton(withTitle: "OK")
120
120
 
121
121
  alert.runModal()
122
122
 
123
123
  ```
124
124
 
125
125
  こうしてみたんですけど、Javascriptに結果を渡せないんです
126
+
127
+ alert.addActionの書き方がわかりません

2

addButtonを足しました

2017/04/25 11:42

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -116,6 +116,8 @@
116
116
 
117
117
  alert.messageText = message
118
118
 
119
+ alert.addButton(withTitle: "OK")
120
+
119
121
  alert.runModal()
120
122
 
121
123
  ```

1

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

2017/04/25 11:35

投稿

apple2
apple2

スコア37

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,19 @@
105
105
  }
106
106
 
107
107
  ```
108
+
109
+
110
+
111
+ アラートの部分を
112
+
113
+ ```Swift3
114
+
115
+ let alert = NSAlert()
116
+
117
+ alert.messageText = message
118
+
119
+ alert.runModal()
120
+
121
+ ```
122
+
123
+ こうしてみたんですけど、Javascriptに結果を渡せないんです