3

如何区分事件-(void)scrollWheel:(NSEvent *)event是由妙控鼠标还是触控板触发的?

我问这个问题的原因是因为我想在使用触控板时为滚动事件分配不同的操作,因为用户可以捏合以缩放触控板。然而,在魔术鼠标上,用户不能轻松捏合,所以我想使用滚动功能来代替捏合。

我可以使用这条线区分普通鼠标和魔术鼠标:

if (([event momentumPhase] != NSEventPhaseNone) || [event phase] != NSEventPhaseNone)

但是,触控板和魔术鼠标都通过了此测试。

4

2 回答 2

3

我能够区分鼠标上的滚轮(不是魔术鼠标,但我怀疑它仍然可以工作)和使用 NSEvent 子类型的触控板:

enum {
   NSMouseEventSubtype           = NX_SUBTYPE_DEFAULT,
   NSTabletPointEventSubtype     = NX_SUBTYPE_TABLET_POINT,
   NSTabletProximityEventSubtype = NX_SUBTYPE_TABLET_PROXIMITY
   NSTouchEventSubtype             = NX_SUBTYPE_MOUSE_TOUCH
};
于 2014-06-10T00:15:18.073 回答
1

您应该处理scrollWheelMagic Mouse 并NSMagnificationGestureRecognizer在触控板上添加捏合手势。两者不冲突,但触控板上的滑动滚动会触发scrollWheel

于 2019-06-19T14:11:00.390 回答