因此,我有一个菜单栏应用程序,该菜单栏应用程序在自定义视图中具有一个滑块:我希望能够在拖动的同时按下选项键以使滑块捕捉到增量。
现在,一切正常... 除了我找不到找到通知菜单应用程序已按下选项键的单一方法。这是我尝试过的:
NSEvent.addGlobalMonitorForEvents
NSEvent.addLocalMonitorForEvents
NSApplication.shared.currentEvent
flagsChanged(with event: NSEvent)
viewController
设置为acceptFirstResponder
,并辞去了视图的第一响应者。另外,我对视图进行了子类化,并覆盖了flagsChanged
,但这没有用。我尝试创建一个菜单项,该菜单项具有诸如“ s”或“ p”之类的键来触发动作。但是,当“操作”被触发时,菜单栏会隐藏...
因此,我试图找到如何在按下选项键时得到通知。这可能吗?我可以澄清您是否有任何疑问。
答案 0 :(得分:1)
在自定义滑块视图的x = [1,2,3,19,19,24,1,1,2,2,3,3,2,3,1]
df = pd.DataFrame({'ContextID': np.repeat([1,2], len(x)),
'StepID': x * 2})
df['StepID_new'] = df['StepID'] + df.groupby('ContextID')['StepID'].transform(
lambda x: ((x==24).cumsum() > 0).shift(1, fill_value=0) * 25)
print(df)
方法中,您只需检查NSEvent参数的 ContextID StepID StepID_new
0 1 1 1
1 1 2 2
2 1 3 3
3 1 19 19
4 1 19 19
5 1 24 24
6 1 1 26
7 1 1 26
8 1 2 27
9 1 2 27
10 1 3 28
11 1 3 28
12 1 2 27
13 1 3 28
14 1 1 26
15 2 1 1
16 2 2 2
17 2 3 3
18 2 19 19
19 2 19 19
20 2 24 24
21 2 1 26
22 2 1 26
23 2 2 27
24 2 2 27
25 2 3 28
26 2 3 28
27 2 2 27
28 2 3 28
29 2 1 26
来查看它是否包含选项键。
-
由于可以解释为滑块是一个实际的NSSlider,因此,实际上是使用NSSliderCell实现了滑块的控件,并且鼠标跟踪从视图传递到了mouseDown中的单元格,因此NSSlider的mouseDragged不会被调用,相反,您必须在单元格的mouseDragged
方法中进行工作。但是,如果您使用的是NSSlider,则可能只想使用modifierFlags
。