鼠标事件响应
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];
/