NSEvent和Magic Mouse

时间:2013-01-22 14:59:57

标签: macos osx-lion mouse trackpad

如何区分事件-(void)scrollWheel:(NSEvent *)event是否由Magic Mouse鼠标或触控板触发?

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

我可以使用这一行来区分普通鼠标和Magic Mouse:

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

然而,这个测试都是针对触控板和Magic Mouse传递的。

2 个答案:

答案 0 :(得分:3)

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

enum {
   NSMouseEventSubtype           = NX_SUBTYPE_DEFAULT,
   NSTabletPointEventSubtype     = NX_SUBTYPE_TABLET_POINT,
   NSTabletProximityEventSubtype = NX_SUBTYPE_TABLET_PROXIMITY
   NSTouchEventSubtype             = NX_SUBTYPE_MOUSE_TOUCH
};

答案 1 :(得分:0)

您应该为魔术鼠标处理NSMagnificationGestureRecognizer,并在触控板上添加scrollWheel作为捏合手势。两者互不冲突,但触控板上的滑动滚动会触发stats