問題タブ [nstextview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - NSTextViewでのテキスト選択の色の変更
NSTextViewに「ハイライト」機能を書き込もうとしています。現在、すべてがうまく機能しています。テキストの範囲を選択すると、そのテキストの背景色が黄色に変わります。ただし、選択されている間は、背景は選択されたテキストの標準の青になります。標準の選択インジケーターの色が特定の場合に表示されないようにするにはどうすればよいですか?
ありがとう!
macos - CoreDataコンテキストとバインディングの問題を保存する
10.5以降で動作するMacアプリケーションにはCoreDataを使用しています。エンティティのコンテンツ(テキスト属性)は、バインディングを介してNSTextViewに表示されます。ユーザーはそこでテキストを編集できます。
管理対象オブジェクトのコンテキストを保存しようとすると、マウスカーソルがテキストビューから消え、テキストビューが上にスクロールします。
ユーザーがフォーカスを失うのは面倒なので、CoreData /bindingがこれを行うのを防ぐにはどうすればよいですか?
編集:質問を完了としてマークするための個別の回答としてソリューションを追加しました!
objective-c - NSScrollView を編集不可に設定する
ユーザーが NSScrollView を編集できないようにする方法を考えていましたが、方法が見つかりませんでした。IB にはオプションがなく、NSSCrollView クラスの適切なメソッドも見つかりませんでした。
以前の投稿でデリゲート メソッドの実装が提案されました
false を返しますが、これはまだうまくいきませんでした。前の質問には解決策がありませんでした。
(また、「編集可能」オプションが表示されないすべてのTextViewを選択しようとしましたが、新しいXcodeをダウンロードしたので、バージョンは問題になりません)
cocoa - NSCell の fieldEditorForView の呼び出し方法: カスタム フィールド エディターを割り当てる
NSTextField のフィールド エディターとして使用したい NSTextView があります。
ビューにはカスタム フィールド エディタを使用しない他の NSTextFields があるため、NSCell のメソッドを使用する必要があるようです。
ただし、これをどのように呼び出すかについて頭を悩ますことはできず、使用されている例は見つかりませんでした。
NSCellのドキュメントによると、「aControlView」は次のとおりです。
カスタム フィールド エディターを必要とするセルを含むビュー。
私の脳が言っているのは、NSTextField(NSViewのサブクラスとして)ではなく、「このNSTextFieldが含まれているビュー」を意味します。
でも:
viewForFieldEditor:
それは...ではなく、NSCell上にあるため、私には意味がありません。
誰かが私を憐れんで、私の考えをほぐしてくれますか?
objective-c - NSTextViewは、レイヤー上にあるときに赤いスペルミスの下線を表示しません
anがレイヤーバック( )NSTextView
のサブビューである場合、スペルミスのある単語の波状の赤い下線は表示されません。これを再現するために必要なのは、空のCocoaプロジェクトを作成し、ペン先を開き、ウィンドウにドラッグして、ウィンドウのコンテンツビューを切り替えてレイヤーを作成することだけです。ブーム-赤い下線はもうありません。NSView
-wantsLayer == YES
NSTextView
私はいくつかの検索を行いましたが、これは既知の状況のようであり、10.5から当てはまります。しかし、私が見つけられないのは、その回避策です。NSTextView
レイヤーバックビューにあるときに下線をレンダリングする方法はありませんか?
をオーバーライドし、レイアウトマネージャーを使用して、スペルミスを示す適切な一時属性が設定された適切な四角形を見つけて、自分で赤い波線を描くことを想像できますが、それはもちろん完全なハックNSTextView
です。drawRect:
私はまた、Appleが10.7でこれを修正することを想像することができます(おそらく)そして突然私のアプリは二重の下線か何かを持つでしょう。
[更新]私の回避策
私の現在の回避策は、nptacekの言及されたスペルチェックデリゲートメソッドに触発され、以前は気づかなかったパスを深く掘り下げるように促されたので、その答えを受け入れますが、後世のために行ったことを投稿します。討論。
10.6.5を実行しています。NSClipViewのカスタムサブクラスのドキュメントビューであるNSTextViewのサブクラスがあります。これは、レイヤーがオンになっているウィンドウのcontentViewのサブビューです。これで遊んでいると、最終的にすべてのカスタマイズがコメントアウトされましたが、それでもスペルチェックが正しく機能していませんでした。
私は、2つの明確な問題が何であるかを特定しました。
#1は、NSTextViewがレイヤーに裏打ちされたビューでホストされている場合、スペルミスの下線をわざわざ描画することさえないということです。(Googleの検索に基づいて、10.5日間に下線が引かれた時期があったかもしれないが、正しい場所にはなかった可能性があることを収集しました。そのため、Appleは10.6でその問題を回避するために、それらを完全に無効にした可能性があります。わかりません。 。また、私が物を配置する方法などの副作用があり、私の場合はまったく表示されない可能性があります。現在は不明です。)
#2NSTextViewがこのレイヤー関連の状況にある場合、-isContinuousSpellCheckingEnabledがYESに設定されている場合でも、入力中にテキストのスペルが間違っていると正しくマークされていないように見えます。いくつかのスペルチェックデリゲートメソッドを実装し、NSTextViewが変更に関するメッセージを送信するのを見て、テキスト範囲をスペルミスとして設定するように通知することはありませんでした-テキストエディット(および他のテキストビューで赤い下線が表示される明らかにスペルミスの単語がある場合でも)他のアプリで)。また、NSTextViewの-handleTextCheckingResults:forRange:types:options:orthography:wordCount:をオーバーライドして、何が表示されているかを確認しましたが、同じものが表示されました。NSTextViewがカーソルの下の単語をスペルミスがないようにアクティブに設定していて、ユーザーがスペースを入力したり、スペースから離れたりしたときに、そうではなかったようです。tスペルミスがないか再確認します。しかし、私は完全にはわかりません。
さて、#1を回避するために、カスタムNSTextViewサブクラスの-drawRect:をオーバーライドして次のようにします。
次に、-drawFakeSpellingUnderlinesInRect:を実装して、layoutManagerを使用して、一時的な属性としてNSSpellingStateAttributeNameを含むテキスト範囲を取得し、標準のOSXスペルミスのドットパターンにかなり近いドットパターンをレンダリングしました。
したがって、これを行った後、赤い下線が表示されますが、入力してもスペルの状態が更新されないようです。この問題を回避するために、NSTextViewサブクラスに次の邪悪なハックを実装しました。
これは、実際の予想されるOSXの動作とまったく同じようには機能しませんが、かなり近いものであり、今のところ作業は完了しています。うまくいけば、これは他の誰かに役立つか、もっと良いことに、誰かがここに来て、私が信じられないほど単純なものが欠けていると私に言い、それを修正する方法を説明します。:)
cocoa - NSAttributedString で段落をどのように定義しますか?
NSParagraphStyleAttributeName
Cocoa のテキストに段落スタイルを適用するための属性名 ( ) があるようです。テキストは に格納されNSAttributedString
ますが、その文字列の「段落」を定義するものは何ですか?それは改行文字\n
ですか? 他のキャラクター?の場合\n
、新しい段落を開始せずに新しい行を作成するにはどうすればよいですか。最後に、ParagraphStyle を文字列にアタッチする場合、段落全体の正確な範囲を使用する必要がありますか、それとも段落内の任意のサブ範囲に配置できますか。サブ範囲である可能性がある場合、システムは同じ段落で 2 つ以上の ParagraphStyles をどのように処理しますか?
ありがとう、ロブ
cocoa - NSTextViewでグラフィックを混合しますか?
図面やその他の非テキストをテキストビューに埋め込む方法があることをどこかで読んだと思いましたが、Appleのドキュメントにはそれについて何も見つかりません。誰かが私を正しい方向に向けることができますか?ビューだけでなく、エディターを作成しようとしています。基になるテキストに特殊文字を想像していて、テキスト属性に基づいて、テキストレイアウトに空白スペースを確保します。?または、NSTextContainersとカスタムNSViewを使用してグラフィックの周りにテキストを流し、自分でブロックをレイアウトする必要がありますか?
objective-c - NSTextView で複数のカーソルを描画する
UITextView についてではありません。
Macアプリケーションでは、NSTextView (NSScrollView) に複数のカーソルを描画したいと考えています。1 つのカーソルはもちろん、入力している位置であり、通常の入力時に表示される位置です。
他のカーソルは、同じ上で他の人が入力している位置です。これらのカーソルの位置は、NSArray 内の NSNumber です。
NSTextView の描画メソッドをオーバーライドして、特定の文字位置にカーソルを描画するにはどうすればよいですか? パイプ文字はオプションではありません。
ああ、NSTextView 内のすべてのテキストのフォントは常に Monaco 10pt であることに注意してください。
objective-c - NSDocument に行末文字列を設定しますか?
NSTextView
(この質問は、いくつかのさらなる調査に続く問題から書き直されました)
更新: ここで問題を表示する非常に基本的なプロジェクトをダウンロードできます。
http://w3style.co.uk/~d11wtq/DocumentApp.tar.gz
(grep -c "\r" file.txt
保存したファイルに対してa を実行して、\r
発生する行数を取得します... を繰り返します\n
)。
私の文書サブクラスの戻り値には が含まれていなくても、のみが含まれてNSDocument
い\r
ます。これを設定する方法はありますか?\n
NSData
\r
\n
最近の Mac は UNIX の行末を使用していると思っていたので、AppKit がまだ時代遅れの Mac の行末を使用しているのは奇妙に思えます。奇妙なのは、 をNSDocument
要求し、行末を変換するNSData
ことによって、かなり不親切にそれを破壊することです。NSData
への切り替え\r
はの生成後NSData
に行われるため、それNSDocument
自体がバイトに対していくつかの置換を行っています。
出力 (注 0a は の 16 進値です\n
):
が要求する場合NSDocument
はNSData
、それを尊重し、変更しないでください。
-dataOfType:error:
私のドキュメントの method: method の完全なコードは次のとおりです。
objective-c - 特別なテキスト編集に使用するオブジェクト
次のことを行う特別なテキストフィールドが必要です:
- マルチライン
- タブキーのサポート
- Enter キーが押されたときにアクションを送信する
- Alt+Enter 改行
- Shift+Enter 改行
何を使えばいいのかわからない。
NSTextView は良さそうに見えますが、Enter でアクションを設定できず、Enter キーを押すと新しい行が表示されます
NSTextField にはタブキーのサポートがなく、Shift-Enter は機能しません。
何か案は?ありがとう!