Проблема с обнаружением точки мыши в кадре NSTextView по событию mouseDown по сравнению с отсутствием проблем с rightMouseDown
У меня есть тестовый проект, в котором NSTextView программно добавляется к следующему настраиваемому NSView - Canvas - путем нажатия кнопки.
class Canvas: NSView
{
var arrayOfNSTextViews = [NSTextView]()
override func mouseDown(with event: NSEvent){
let mousePoint = self.convert(event.locationInWindow, from: nil)
for each in arrayOfNSTextViews
{
if each.frame.contains(mousePoint) == true
{
NSCursor.closedHand.set()
}
break
}
}
override func rightMouseDown(with event: NSEvent){
let mousePoint = self.convert(event.locationInWindow, from: nil)
for each in arrayOfNSTextViews
{
if each.frame.contains(mousePoint) == true
{
NSCursor.closedHand.set()
}
break
}
}
override func mouseUp(with event: NSEvent) {
NSCursor.arrow.set()
}
override func rightMouseUp(with event: NSEvent){
NSCursor.arrow.set()
}
}
В AppDelegate
class AppDelegate: NSObject, NSApplicationDelegate {
...
@IBOutlet weak var canvas: Canvas!
@IBAction func addText(_ sender: Any)
{
let attributesForText: [NSAttributedString.Key : Any] =
[
NSAttributedString.Key.foregroundColor: NSColor.darkGray,
NSAttributedString.Key.backgroundColor: NSColor.clear,
NSAttributedString.Key.font: NSFont(name: "Helvetica", size: 20) as Any
]
let textView = NSTextView()
let sizeOfText = "Test Text".size(withAttributes: attributesForText)
textView.frame.size = NSMakeSize(sizeOfText.width, sizeOfText.height)
textView.frame.origin = NSPoint(x: canvas.frame.width / 2.0 - (sizeOfText.width / 2.0) , y: canvas.frame.height / 2.0)
textView.backgroundColor = NSColor.white
textView.string = "Test Text"
textView.isEditable = false
textView.isSelectable = false
canvas.arrayOfNSTextViews.append(textView)
canvas.addSubview(textView)
}
}
Проблема в следующем. Мне нужно проверить, находится ли точка мыши в кадре NSTextView. Когда я делаю это с помощью события нажатия правой кнопки мыши - rightMouseDown(с событием: NSEvent) - я вижу, как курсор меняет свой вид на closeHand, но когда я нажимаю левую кнопку мыши - mouseDown(с событием: NSEvent) - тогда курсор не не меняет свой вид на ожидаемый closedHand. Почему? Что не так или отличается между этими двумя событиями?