Mac开发云集Mac开发iOS之MAC端开发

Mac开发 关于鼠标的事件(隐藏)

2017-09-20  本文已影响130人  原来你是这种花椒

首先,mac上的鼠标事件和web一样,有悬停方法等。

开启鼠标悬停事件

先声明:

@property(nonatomic,strong) NSTrackingArea *trackingArea;

在需要的时候调用这个方法

-(void)openMouseOverflowEvent{

NSTrackingAreaOptions  options =

NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways | NSTrackingMouseMoved;

self.TrackingArea = [[NSTrackingArea alloc] initWithRect:self.view.bounds options:options owner:self.view userInfo:nil];

[self.view addTrackingArea:self.trackingArea];

NSLog(@"开启鼠标悬停");

}

这样就开启了鼠标事件

NSTrackingMouseEnteredAndExited  代表鼠标进入窗口和离开窗口

NSTrackingMouseMoved  代表鼠标在窗口上移动

鼠标进入窗口事件

- (void) mouseEntered:(NSEvent *) theEvent{

            if(self.trackingArea != nil) {

            NSLog(@"鼠标进入控制器");

             }else{

          [self openMouseOverflowEvent];

           }

}

鼠标离开窗口事件

-(void)mouseExited:(NSEvent*)theEvent{

      if(_trackingArea != nil) {

     NSLog(@"鼠标离开控制器");

     }else{

     [self closeMouseOverflowEvent];

}

鼠标移动事件

- (void)mouseMoved:(NSEvent*)event{

     NSLog(@"鼠标移动");

}

关闭鼠标悬停事件

- (void)closeMouseOverflowEvent{

[self.view removeTrackingArea:_trackingArea];

_trackingArea=nil;

NSLog(@"关闭鼠标悬停");

}


接下来说一说 鼠标隐藏方法

鼠标隐藏

这个真的是我找了很久才找到的 ,心里苦 。

//隐藏鼠标

[NSCursor setHiddenUntilMouseMoves:YES];

一般都是设置延迟执行

dispatch_queue_t  queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_after(dispatch_time(DISPATCH_TIME_NOW,  (int64_t)(2.5*NSEC_PER_SEC)),  queue, ^{

[NSCursor setHiddenUntilMouseMoves:YES];

});

关于Mac开发的随笔记(以下皆是作者随笔)

Mac开发 关于鼠标的事件(隐藏)

Mac开发 NSButton 字体颜色

Mac开发之 文件拖入窗口

Mac开发自定义TitleBar 和设置窗口居中

Mac开发 简单动画

Mac开发之 监听窗口的改变

Mac开发 代码实现 发邮箱

Mac ios开发 URL 转 汉字

Mac开发 给视图设置颜色View,Button等

此文已由作者授权,转载请注明文章出处

如果觉得对你有帮助,不妨支持一下作者

作者支付宝
上一篇 下一篇

猜你喜欢

热点阅读