Проблема с обнаружением точки мыши в кадре 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. Почему? Что не так или отличается между этими двумя событиями?

0 ответов

Другие вопросы по тегам