質問編集履歴

1

アドバイスを受けて試したがうまくできなかったため

2020/04/13 10:57

投稿

freemann
freemann

スコア264

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,51 @@
1
1
  macOSのアプリでコンテクストメニューを実装するにはNSViewでmenu(for:)を使うらしいですが、これをTableView上で右クリックしたときだけにしたいです。
2
2
 
3
3
  マウスのポインタの位置で判断するしかないでしょうか。
4
+
5
+
6
+
7
+ アドバイスを受けて以下のようにコードを追加しましたが、コンテクストメニューが出ません。
8
+
9
+ 右クリックしても何の反応もなし。
10
+
11
+ 実装方法が悪いのでしょうか。
12
+
13
+ ```Swift
14
+
15
+ extension NSTableView {
16
+
17
+ override open func menu(for event: NSEvent) -> NSMenu? {
18
+
19
+ var menu = NSMenu(title: "Context Menu")
20
+
21
+ let myApp = NSApplication.shared.delegate as! AppDelegate
22
+
23
+
24
+
25
+ menu.addItem(withTitle: "", action: #selector(myApp.mainView!.addRow(_:)), keyEquivalent: "")
26
+
27
+
28
+
29
+ menu.addItem(withTitle: "", action: #selector(myApp.mainView!.insertNewRow), keyEquivalent: "")
30
+
31
+
32
+
33
+ menu.addItem(withTitle: "", action: #selector(myApp.mainView!.copyRow), keyEquivalent: "")
34
+
35
+ menu.addItem(withTitle: "", action: #selector(myApp.mainView!.pasteRow), keyEquivalent: "")
36
+
37
+ menu.addItem(withTitle: "", action: #selector(myApp.mainView!.insertCopiedRow), keyEquivalent: "")
38
+
39
+
40
+
41
+ return menu
42
+
43
+
44
+
45
+ }
46
+
47
+ }
48
+
49
+
50
+
51
+ ```