如何区分事件-(void)scrollWheel:(NSEvent *)event是由魔术鼠标还是触控板触发的?
我问这个问题的原因是,当使用触控板时,我想为滚动事件分配一个不同的操作,因为用户可以在触控板上按一下缩放。然而,在魔术鼠标上,用户不能很容易地收缩,所以我想使用滚动功能来代替收缩。
我可以使用下面这行代码来区分普通鼠标和魔法鼠标:
if (([event momentumPhase] != NSEventPhaseNone) || [event phase] != NSEventPhaseNone)然而,这个测试对于触控板和魔术鼠标都是通过的。
发布于 2014-06-10 08:15:18
我能够区分鼠标上的滚轮(不是魔术鼠标,但我怀疑它仍然可以工作)和使用NSEvent的子类型的触控板:
enum {
NSMouseEventSubtype = NX_SUBTYPE_DEFAULT,
NSTabletPointEventSubtype = NX_SUBTYPE_TABLET_POINT,
NSTabletProximityEventSubtype = NX_SUBTYPE_TABLET_PROXIMITY
NSTouchEventSubtype = NX_SUBTYPE_MOUSE_TOUCH
};发布于 2019-06-19 22:11:00
您应该为魔术鼠标处理scrollWheel,并为触控板上的收缩手势添加一个NSMagnificationGestureRecognizer。两者并不冲突,但触控板上的滑动滚动会触发scrollWheel。
https://stackoverflow.com/questions/14461529
复制相似问题