Добрый день!
В проекте добавляю кастомный NSTextField в NSView, чтобы затем можно было текст перемещать/вращать/редактировать . Все хорошо за исключением того что возможности для редактирования ограничены. Понятно что в NSTextView опций для редактирования текста намного больше. Попробовал использовать NSTextView вместо NSTextField. Возникла новая проблема с NSTextView. Если в случае NSTextField работала следующая схема перемещение - mouse down, проверка если mouse point внутри frame от NSTextField который собираемся перетаскивать - при это меняется вид курсора - то далее при mouse drag перетаскиваем этот NSTextField в нужное место. С NSTextView это схема перестала работать на условии проверки если mouse point внутри frame от NSTextView - вид курсора не меняется. Если это условие убираю NSTextView перемещается. Но это условие необходимо, иначе все NSTextViews будут перемещаться.
Не понимаю в чем причина. Могу только предполагать что собака зарыта в том что NSTextView находится by default внутри NSScrollView.
Посоветуйте пожалуйста как решить проблему !!!
NSTextView добавляю программно следующим образом
let textView = ResizingNSTextView()
let sizeOfText = "Test text".size(withAttributes: attributesForText)
textView.frame.size = NSMakeSize(sizeOfText.width, sizeOfText.height)
textView.frame.origin = NSPoint(x: canvasView.frame.width / 2.0 - (sizeOfText.width / 2.0) , y: canvasView.frame.height / 2.0)
textView.backgroundColor = NSColor.white
textView.textStorage?.append(NSAttributedString(string: "Test text"))
textView.isEditable = false
textView.isSelectable = false
canvasView.addSubview(textView)
class ResizingNSTextView: NSTextView
{
override func didChangeText()
{
super .didChangeText()
let contentRect = self .textContainer?.layoutManager?.usedRect(for: self.textContainer!)
self .frame.size = NSMakeSize( self.frame.size.width, contentRect!.size.height)
}
}