Mac OS 中 监听鼠标滑动区域

前言

在iOS中,获取手指的触摸区域比较简单,可以通过手势,touchsBegin等一系列来判断。甚至还可以通过 hitTest去做很多花哨的东西,这里就不多说了。

在Mac中,需要的是一个TrackingArea

当然,和iOS中一样,只有View可以去接收手指的手势等事件。

直接上代码

interface testView()
@property(strong) NSTrackingArea* trackingArea;
@end
@implementation testView

- (void)drawRect:(NSRect)dirtyRect {
    [super drawRect:dirtyRect];
    
    // Drawing code here.
}

- (void)mouseEntered:(NSEvent *)event{
    [super mouseEntered:event];
    NSLog(@"mouse enter");
}

- (void)mouseExited:(NSEvent *)event{
    [super mouseExited:event];
    NSLog(@"mouse exited");
}

- (void)updateTrackingAreas
{
    if(self.trackingArea != nil) {
        [self removeTrackingArea:self.trackingArea];
    }
    
    int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
    self.trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
                                                     options:opts
                                                       owner:self
                                                    userInfo:nil];
    [self addTrackingArea:self.trackingArea];
}

可以定义代理或Block,在mouseEnter和mouseExit的时候监听到鼠标进入和移出视图的事件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容