Cocoa 鼠标事件

Cocoa中的NSResponder类提供了鼠标事件响应能力,所有视图都继承自它,因此可以方便地处理鼠标按下和松开事件。文章详细介绍了鼠标一般事件、鼠标跟踪事件以及鼠标拖拽事件的处理方式,并探讨了在视图尺寸变化时如何更新跟踪区域以避免事件触发问题。
摘要由CSDN通过智能技术生成

鼠标事件响应

NSResponder提供了鼠标响应事件,而所有的视图都继承自NSResponder,所以我们可以很方便的处理鼠标事件。

鼠标一般事件

鼠标一般事件有按下和松开,又有左右键和其它键之分(本文只讲述左右键),对应的消息如下:

// 按下鼠标左键
- (void)mouseDown:(NSEvent *)theEvent;
// 松开鼠标左键
- (void)mouseUp:(NSEvent *)theEvent;
// 按下鼠标右键
- (void)rightMouseDown:(NSEvent *)theEvent;
// 松开鼠标右键
- (void)rightMouseUp:(NSEvent *)theEvent;

鼠标点击后,NSEvent捕获到的坐标是基于Window的,所以需要经过转换才能使用。

- (void)mouseDown:(NSEvent *)theEvent {
    /**
     *  将mouseDown消息传递给父类
     *  注意,如果写了这句的话,mouseUp事件将不会触发
     */
    [super mouseDown:theEvent];

    // 将鼠标点击位置的坐标从Window转换为当前View,fromView设为nil表示从Window转换
    NSPoint location = [self convertPoint:theEvent.locationInWindow fromView:nil];

    /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值