有什么方法可以将mouseOver事件添加到可可中的tableView吗? [英] Is there any way to add mouseOver events to a tableView in cocoa?

查看:54
本文介绍了有什么方法可以将mouseOver事件添加到可可中的tableView吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想让我的tableView像这样:
当鼠标滑过特定行时,该行将突出显示,就像按钮的mouseOver事件一样

I want to make my tableView act like this:
When the mouse swipe over a certain row, the row will be highlighted, just like the mouseOver event of a button

推荐答案

(忽略鼠标悬停是错误的GUI"讲道(无论如何,您都会忽略它;;-))

(Ignoring the "Mouse Over is bad GUI" sermon (which you'll ignore anyway… ;-))

#import "MoTableView.h"

@implementation MoTableView
{
    NSUInteger mouseRow;
    NSRect mouseRowFrame;
}

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
        mouseRow = -1;
    }
    return self;
}

- (void)awakeFromNib
{
    [self.window setAcceptsMouseMovedEvents:YES];
}

- (void)drawRect:(NSRect)dirtyRect
{
    [super drawRect:dirtyRect];

    // Drawing code here.
    [[NSColor redColor] set];
    NSLogDebug(@"mouseRowFrame: %@", NSStringFromRect(mouseRowFrame));
    NSFrameRectWithWidth(mouseRowFrame, 2.);
}

- (void)mouseMoved:(NSEvent *)theEvent
{
    NSPoint mouseLocation = [theEvent locationInWindow];
    NSPoint viewLocation = [self convertPoint:mouseLocation fromView:nil] ;
    NSInteger row = [self rowAtPoint:viewLocation];
    if (row != mouseRow) {
        mouseRowFrame = [self rectOfRow:row];
        [self setNeedsDisplay];
        mouseRow = row;
    }
}

@end

这篇关于有什么方法可以将mouseOver事件添加到可可中的tableView吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆