gpt4 book ai didi

objective-c - 有什么方法可以将 mouseOver 事件添加到 cocoa 中的 tableView 中吗?

转载 作者:行者123 更新时间:2023-12-03 16:24:17 25 4
gpt4 key购买 nike

我想让我的 tableView 表现如下:
当鼠标滑过某一行时,该行会突出显示,就像按钮的 mouseOver 事件

最佳答案

我花了一些时间基于this进行工作。提示。

这对我有用,如果我错了,请纠正我。

在 macOS 10.12.2 和 Xcode 8.2.1 上使用 Swift 3.0.2 进行测试

//
// Created by longkai on 30/12/2016.
// Copyright (c) 2016 xiaolongtongxue.com. All rights reserved.
//

import Cocoa

class InboxTableCellView: NSTableCellView {
// MARK: - Outlets
@IBOutlet weak var title: NSTextField!
@IBOutlet weak var sender: NSTextField!
@IBOutlet weak var time: NSTextField!
@IBOutlet weak var snippet: NSTextField!

// MARK: - Mouse hover
deinit {
removeTrackingArea(trackingArea)
}

private var trackingArea: NSTrackingArea!

override func awakeFromNib() {
super.awakeFromNib()
self.trackingArea = NSTrackingArea(
rect: bounds,
options: [NSTrackingAreaOptions.activeAlways, NSTrackingAreaOptions.mouseEnteredAndExited,/* NSTrackingAreaOptions.mouseMoved */],
owner: self,
userInfo: nil
)
addTrackingArea(trackingArea)
}

override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)

NSColor(red: 0.96, green: 0.96, blue: 0.96, alpha: 1.00).set()

// mouse hover
if highlight {
let path = NSBezierPath(rect: bounds)
path.fill()
}

// draw divider
let rect = NSRect(x: 0, y: bounds.height - 2, width: bounds.width, height: bounds.height)
let path = NSBezierPath(rect: rect)
path.fill()
}

private var highlight = false {
didSet {
setNeedsDisplay(bounds)
}
}

override func mouseEntered(with event: NSEvent) {
super.mouseEntered(with: event)
if !highlight {
highlight = true
}
}

override func mouseExited(with event: NSEvent) {
super.mouseExited(with: event)
if highlight {
highlight = false
}
}
}

关于objective-c - 有什么方法可以将 mouseOver 事件添加到 cocoa 中的 tableView 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23332153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com