Отмена выбора NSTableView при нажатии где-нибудь за пределами таблицы - PullRequest
1 голос
/ 17 августа 2010

У меня есть NSTableView, размещенный поверх NSView.Я хочу отменить выбор NSTableView, когда указатель мыши нажимается на NSView.Как этого добиться?

1 Ответ

6 голосов
/ 25 августа 2013

Я знаю, что это старый, но один из вариантов - создать подкласс NSTableView и переопределить его mouseDown:

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

    [super mouseDown:event];

    NSPoint point = [self convertPoint:[event locationInWindow] fromView:nil];
    NSInteger row = [self rowAtPoint:point];

    if (row == -1) { // We didn't click any row

        [self deselectAll:nil];
    }
}

Swift 3 версия:

override open func mouseDown(with event: NSEvent) {
    super.mouseDown(with: event)

    let point    = convert(event.locationInWindow, from: nil)
    let rowIndex = row(at: point)

    if rowIndex < 0 { // We didn't click any row
        deselectAll(nil)
    }
}
...