私の目標は、Goole Docsテキストエディタに似たビューを作成し、コメントのあるテキストの後ろにハイライト表示することです。 NSViewとNSScrollView内のNSTextView
私のソリューションは、スクロールやテキストのNSTextView
の両方が含まれ、そして他のNSView
sのハイライトになるということNSScrollView
が(ドキュメントビューとして設定)NSView
を含むことです。
これが機能するには、NSTextView
はあたかもNSScrollView
に属しているかのようにサイズを変更する必要があります。しかし、私はNSTextView
にこの動作をさせることはできません。
Iレイアウトを持っているコードは:
LatinViewController:loadViewメソッド()
...
let latinView = LatinView()
latinView.autoresizingMask = [.ViewWidthSizable]
latinView.wantsLayer = true
latinView.layer?.backgroundColor = Theme.greenColor().CGColor
self.latinView = latinView
scrollView.documentView = latinView
...
LatinView:INIT()
...
let textView = LatinTextView()
textView.translatesAutoresizingMaskIntoConstraints = false
textView.string = "Long string..."
self.addSubview(textView)
self.textView = textView
self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[text]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["text": textView]))
self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[text]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["text": textView]))
...
LatinTextViewます。init()
...
self.minSize = NSMakeSize(0, 0)
self.maxSize = NSMakeSize(0, CGFloat(FLT_MAX))
self.verticallyResizable = true
self.horizontallyResizable = false
self.textContainer?.heightTracksTextView = false
...
はこれを行うことができますか?
これは素晴らしい解決策のようです。私が考えた別の解決策は 'NSTextView'のメイン' NSTextLayer'レイヤーの下に 'CALayer'インスタンスを追加してハイライトを表示する方法でしたが、この解決策はより良く見えます。どう思いますか? – jamespick