Mac开发 关于鼠标的事件(隐藏)
首先,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开发的随笔记(以下皆是作者随笔)
此文已由作者授权,转载请注明文章出处
如果觉得对你有帮助,不妨支持一下作者
