Swift 3:
Создайте кнопку с кодом или просто используйте ее @IBOutlet.
Затем определите область отслеживания кнопки при наведении курсора мыши:
let area = NSTrackingArea.init(rect: yourButtonName.bounds,
options: [.mouseEnteredAndExited, .activeAlways],
owner: self,
userInfo: nil)
yourButtonName.addTrackingArea(area)
Затем переопределите mouseEntered и mouseExited, установите все, что вы хотите изменить (цвет кнопки, изображение кнопки, текст кнопки, ..) в следующих функциях:
override func mouseEntered(with event: NSEvent) {
print("Entered: \(event)")
}
override func mouseExited(with event: NSEvent) {
print("Exited: \(event)")
}
Если у вас есть несколько кнопок (с каждой областью отслеживания, добавленной для каждой), и вам нужно определить, какая кнопка вызвала событие mouseEntered, вы можете добавить для этого некоторую информацию userInfo, поэтому вместо:
userInfo: nil
Добавьте свое пользовательское имя кнопки в userInfo для каждой кнопки, например:
userInfo: ["btnName": "yourButtonName"]
Затем вы можете написать switch-case или if в ваших функциях mouseEntered и mouseExited, например:
override func mouseEntered(with event: NSEvent) {
// Identify which button triggered the mouseEntered event
if let buttonName = event.trackingArea?.userInfo?.values.first as? String {
switch (buttonName) {
case "yourButtonName":
//do whatever you want for this button..
case "anotherButtonName":
//do whatever you want for this button..
default:
print("The given button name: \"\(buttonName)\" is unknown!")
}
}
}