Interface Builderからの編集可能なNStextView -- swift フィールド と macos フィールド と nstextview フィールド 関連 問題

editable nstextview from interface builder












0
vote

問題

日本語

NStextViewを編集することができません。 これが私が試したステップです。

  1. Interface Builderから、ドラッグしたドラッグは別のビューに「カスタムビュー」をドロップしました。 (私はそこにNStextViewを見つけられませんでした。)
  2. カスタムビューフォーム "nsview"のクラスを "nstextview"
  3. に変更しました
  4. 次にプロジェクトを実行すると、テキストビューがレンダリングされている(マウスカーソルがテキストビュー領域のマウスホーバーのテキストモードに変更された)
  5. を見ることができます。
  6. しかし、私はテキストを挿入/入力/編集できませんでした。
  7. 注:Seteditable、SeleSelectable&AMPを試してみました。他の投稿で推奨されているFirstResponderオプションを設定しました。

英語

I'm unable get to edit an nstextview. Here is the steps I tried.

  1. From the interface builder, I dragged dropped a "Custom view" into another view. (I couldnt find a nstextview there.)
  2. I changed the class of the Custom view form "NSView" to "NSTextView"
  3. Next I run my project, I can see the text view getting rendered (the mouse cursor changed to text-mode on the mouse-hover of text view area)
  4. However, I have not been able to insert/type/edit any text.

Note: I have tried setEditable, setSelectable & set firstResponder options recommended in other posts, which did not help.

</div
        
         
         

回答リスト

1
 
vote

問題は、Interface Builderを説明するときにNSTextViewでTextStorageが正しく設定されていないことです。

ScrollViewなしでNStextViewをインターフェイスビルダーで使用したいと思っています。 Xcode 10では、いくつかのカスタムビュー階層にLone NStextViewを入れることは不可能ではありません(以前の回答はこれが可能であることをヒントしました。 HTTPS ://stackoverflow.com/a/2398980/978300

質問の「CustomView」メソッドを使用してこの作動を取得することが可能です - ただし、これは属性インスペクタに単純なNSViewプロパティのみを持ちます(すなわち、フォントなどをカスタマイズできません)。カスタムクラスで@Ibinspectableを使用して詳細に渡すことができます。

接続検査官は正しく機能しているようです。

例NSTextViewサブクラス...

<事前> <コード> class MyTextView: NSTextView { // init(frame: sets up a default textStorage we want to mimic in init(coder: init() { super.init(frame: NSRect.zero) configure() } /* It is not possible to set up a lone NSTextView in Interface Builder, however you can set it up as a CustomView if you are happy to have all your presentation properties initialised programatically. This initialises an NSTextView as it would be with the default init... */ required init(coder: NSCoder) { super.init(coder: coder)! let textStorage = NSTextStorage() let layoutManager = NSLayoutManager() textStorage.addLayoutManager(layoutManager) // By default, NSTextContainers do not track the bounds of the NSTextview let textContainer = NSTextContainer(containerSize: CGSize.zero) textContainer.widthTracksTextView = true textContainer.heightTracksTextView = true layoutManager.addTextContainer(textContainer) replaceTextContainer(textContainer) configure() } private func configure() { // Customise your text here... } }
 

The problem is that the textStorage is not set up correctly on the NSTextView when you use Interface Builder in the way described.

I too wanted to use an NSTextView, without scrollView, in InterfaceBuilder. In Xcode 10 it doesn't seem possible to put a lone NSTextView in some custom view hierarchy (earlier answers have hinted that this was possible: https://stackoverflow.com/a/2398980/978300).

It is possible to get this working with the "CustomView" method in the question - however, this will only have the simple NSView properties in the Attributes inspector (i.e. you won't be able to customise font etc). You could pass some details through using @IBInspectable on your custom class.

The Connections Inspector seems to work correctly.

Example NSTextView subclass...

class MyTextView: NSTextView {     // init(frame: sets up a default textStorage we want to mimic in init(coder:     init() {         super.init(frame: NSRect.zero)         configure()     }      /*      It is not possible to set up a lone NSTextView in Interface Builder, however you can set it up      as a CustomView if you are happy to have all your presentation properties initialised      programatically. This initialises an NSTextView as it would be with the default init...      */     required init(coder: NSCoder) {         super.init(coder: coder)!          let textStorage = NSTextStorage()         let layoutManager = NSLayoutManager()         textStorage.addLayoutManager(layoutManager)          // By default, NSTextContainers do not track the bounds of the NSTextview         let textContainer = NSTextContainer(containerSize: CGSize.zero)         textContainer.widthTracksTextView = true         textContainer.heightTracksTextView = true          layoutManager.addTextContainer(textContainer)         replaceTextContainer(textContainer)          configure()     }      private func configure()     {         // Customise your text here...     } } 
</div
 
 

関連する質問

3  NStextViewスクロール動作と動作の選択  ( Nstextview scrolling behavior and selecting behavior ) 
NSTASKからテキストを出力しているNSTextViewがあります。スクロールと選択の行動を除いて、すべてが期待されるように動作します。 1:スクロールしようとすると、私が手放した後にスクロールの位置が即座に下に戻ります。何か案は?私はこれに関するかなり...

2  ウィンドウ上の垂直方向にテキストを中央にテキストを中央に中央揃えにするには、CocoaのNStextViewを自動調整する方法は?  ( How to autoscroll nstextview in cocoa to center text vertically on the window ) 
NSScrollView内にNSTextViewを含むテキストエディタを作成し、ユーザーがテキストを挿入するたびにテキストビューを自動的にスクロールします。このサンプルコードをスクロールビューの上部までスクロールすることを確認しましたが、どのように機能するか...

5  NStextViewがその内容に完全に合わせるようになる  ( Getting nstextview to perfectly fit its contents ) 
ボタンとTextViewを含むビューがあります。ボタンをクリックすると、TextViewの隠されたステータスが変更され、ビューに表示されます。スプリングとストラットが設定されているため、テキストビューはビューで垂直に拡大します。これはすべてIB で行われます。...

0  チャットテキストビューに適したNStextViewは?  ( Is nstextview appropriate for a chat text view ) 
次の要件を持つチャットウィンドウの種類のビューを開発する必要があります。 画像を表示できるようにする 進捗バーのようなカスタムコントロールがあります スクロール可能で、最後に、 コピーして貼り付け どのクラスを使うべきかを知りたいです。 NSTextVie...

0  Xcode nStextViewのログlog  ( Xcode like log with nstextview ) 
コンソールのようなNStextViewをXcode(または他のすべてのIDE利用可能なIDE)のようなNStextViewを設定しようとしています。ユーザーがNStextViewを編集できないことは、必要に応じて文字を入力できます。同じ機能を設定しようとしてい...

12  トークン付きのNStextView  ( Nstextview with tokens ) 
NSTokenField など、 NStextView ?のようにトークンを追加できますか ...

1  サブクラスNSTextViewは、ココアではUNDOを不可能にします  ( Subclassing nstextview makes undo impossible in cocoa ) 
私は非常に単純なCOCOAプログラムを持っています。 1つのウィンドウ、その中にnStextViewがあります。この構成では、NSTextViewはそれをどのように期待するか正確に動作します。入力、元に戻す、やり直すことができます。 しかしi subclass...

0  NStextViewで選択を太字にするにはどうすればよいですか。  ( How do i make selection bold in the nstextview ) 
SetFont:Range:?しかし、ここでやりたいことは、選択が異なるフォント属性が異なる場合があるため、選択太字を太字にするためのものです。そのため、誰でも言えますか? ...

3  NSATTributedStringによるNSTextView構文の強調表示のパフォーマンスの向上  ( Improving performance on nstextview syntax highlighting via nsattributedstring ) 
アプリに強調表示をいくつか追加することに取り組んでいます。テストクラスでは、 textDidChange 通知で NSTextView があります。これに似ています: <事前> <コード> -(void)textDidChange:(NSNotificatio...

12  NStextViewでリッチテキストを一様に拡大する方法  ( How to uniformly scale rich text in an nstextview ) 
コンテキスト: 私は、<コード> NSTextView をリッチテキスト入力に使用する通常の文書ベースのCocoa Mac OS Xアプリケーションを持っています。ユーザは、<コード> NSTextView のテキストのフォントファミリ、ポイントサイズ、およ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有