gpt4 book ai didi

cocoa - 麦 cocoa : How to differentiate if a NSScrollWheel event is from a mouse or trackpad?

转载 作者:行者123 更新时间:2023-12-03 16:06:51 25 4
gpt4 key购买 nike

在我的应用程序中,我希望仅通过鼠标的滚轮操作而不是触控板上的两个手指手势来进行滚动。基本上,我试图确定scrollWheelEvent是否是从鼠标或触控板生成的,在 - (void)scrollWheel:(NSEvent *)theEvent 方法内。据我所知,到目前为止,似乎没有直接的方法可以实现这一点。

我尝试了一种解决方法,将 bool 变量设置为 true 和 false -(void)beginGestureWithEvent:(NSEvent *)event;和 -(void)endGestureWithEvent:(NSEvent *)event;但这不是解决方案,因为在调用 endGestureWithEvent: 方法之后,scrollWheel: 方法会被多次调用。

这是我的代码:

    $BOOL fromTrackPad = NO;

-(void)beginGestureWithEvent:(NSEvent *)event;
{
fromTrackPad = YES;
}

-(void) endGestureWithEvent:(NSEvent *)event;
{
fromTrackPad = NO;
}

- (void)scrollWheel:(NSEvent *)theEvent
{
if(!fromTrackPad)
{
//then do scrolling
}
else
{
//then don't scroll
}
}

我知道这不是标准,但这是我的要求。有谁知道如何做到这一点?谢谢!

最佳答案

-[NSEvent MomentumPhase] 是解决方案。因此,在 beginGesture 和 endGesture 事件之间从触控板生成的事件对于 -[NSEvent Phase] 以及在 endGesture 之后生成的触控板事件返回除 NSEventPhaseNone 以外的值对于 -[NSEvent MomentumPhase],事件返回的值不是 NSEventPhaseNone。代码如下,

 - (void)scrollWheel:(NSEvent *)theEvent
{
if(([theEvent momentumPhase] != NSEventPhaseNone) || [theEvent phase] != NSEventPhaseNone))
{
//theEvent is from trackpad
}
else
{
//theEvent is from mouse
}
}

关于cocoa - 麦 cocoa : How to differentiate if a NSScrollWheel event is from a mouse or trackpad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13807616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com