問題タブ [nsattributedstring]

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.

0 投票する
1 に答える
1918 参照

cocoa - -[NSTextStorage replaceCharactersInRange:withAttributedString:]が、他の文字セットのフォントを尊重しない場合があるのはなぜですか?

UKSyntaxColoredTextDocument 0.4 http://www.zathras.de/angelweb/blog-uksctd-oh-four.htmで、指定したフォントとは異なるフォントで実際に存在するテキストが消えてしまう問題を診断しようとしています。タイプ。(このクールなユーティリティをダウンロードして試して、この問題を自分で確認できます...)

背景は次のとおりです。これは、入力時に色が変わる構文の色分けコードです。うまく機能しますが、そのテキストビューのフォントセットの一部ではない文字(Monaco、Helveticaなど)を入力した場合...たとえば、ZapfDingbatsITCやHiraKakuProN-W3で表示すると、入力時にそれらの文字は表示されません。

次のようなテキストがあるとします:fdsafd[☀]sfds‡[☀☀☀][日本語].. ..

これをテキストフィールドに貼り付け、ポップアップから構文の色分けを切り替えると、次のoldRecolorRange:行でが呼び出されます。

ここでは、物事は私が期待するように動作します。ASCIIテキスト、記号、および日本語テキストがすべて表示されます。[textView textStorage]の値は、次のように始まり、最終的には次のようになります (これは、gdbの出力です。Unicode文字は表示されません。心配しないでください)。

...新しい値をに設定した後でも

つまり、この文字列を表示するために必要な「外部」フォントは、置換文字列でフォントが指定されていなくても、何らかの方法で自動的に保持されます。

ただし、一度に1文字ずつ入力するとreplaceCharactersInRange:withAttributedString:、メソッドで別の呼び出しを行うと、ベースフォントのみrecolorRange:の属性付き文字列が生成されます。外国文字フォントは追加されていないため、メインフォントの範囲はまったく表示されません!

この方法が、ある状況ではある状況では機能し、別の状況では機能しない理由はありますか?テキストに外国文字を表示させたいというヒントをNSTextStorage/に与えるために渡すことができるある種のスイッチはありますか?NSAttributedString

0 投票する
5 に答える
3844 参照

objective-c - NSAttributedString内のテキストに「非表示」属性を設定するにはどうすればよいですか?

NSTextView私は、テキストを保持するコントロールを備えたCocoaアプリを持っていますNSAttributedString(実際には、それはだと思いますNSMutableAttributedString)。その文字列内のさまざまな文字範囲で、さまざまなテキスト属性(フォント、アンダースコアなど)を簡単に設定および変更できます。

ただし、テキストの一部を非表示に設定したいと思います(CSS属性の効果と同様display: none)。外部イベントが発生したとき(ボタンがクリックされたなど)、その特定の範囲の文字を再表示または非表示にします。

とにかくこれを行うことはありますNSAttributedStringか?

0 投票する
36 に答える
263182 参照

ios - UILabelのNSAttributedStringにタップ可能な「リンク」を作成しますか?

私はこれを何時間も探していましたが、失敗しました。私はおそらく私が何を探すべきかさえ知らないでしょう。

多くのアプリケーションにはテキストがあり、このテキストには丸みを帯びた四角形のWebハイパーリンクがあります。クリックするとUIWebView開きます。私が困惑しているのは、カスタムリンクがあることが多いことです。たとえば、単語が#で始まる場合はクリック可能であり、アプリケーションは別のビューを開いて応答します。どうやってやるの?それは可能ですか、UILabelそれとも私はUITextView何か他のものが必要ですか?

0 投票する
0 に答える
393 参照

cocoa - NSViews pageFooter への画像の挿入

カスタム NSView のページ フッターに画像を挿入しようとしてきたので、印刷するとフッターにテキストと画像が表示されます。私が使用しているコードは次のとおりです。

画像は表示されませんが、テキストは表示されます。私は何を間違えましたか?

Xcode の Resources フォルダーに Logo.tif があり、デスクトップのメイン プロジェクト フォルダーにあります。Logo.tiff も試しました(余分な「f」を使用)

ありがとう、

マイケル

0 投票する
2 に答える
1627 参照

cocoa - ハイパーリンクが NSAttributedString を持つ NSTextField に表示されないことがあるのはなぜですか?

NSTextField で使用するテキストは、次のようにファイルから読み込まれます。

2 つのスクリーンショットのように、最初に NSTextField のどこかをクリックしない限り、ウィンドウ内のハイパーリンクは青い下線でレンダリングされません。

これらのハイパーリンクが常にハイパーリンクのように見えるようにするにはどうすればよいですか?

RTF は次のとおりです。

代替テキスト
(出典: pokercopilot.com )

代替テキスト
(出典: pokercopilot.com )

0 投票する
2 に答える
2702 参照

cocoa - NSAttributedString で添え字を作成する方法

NSAttributedString には上付き文字用の特定の属性があることがわかりますが、下付き文字用の属性が見つかりません。NSAttributedString を使用して下付き文字を作成する一般的な方法は何ですか?

例:H2O

0 投票する
12 に答える
30763 参照

cocoa - 固定幅で NSAttributedString の高さを取得する方法

固定幅のボックスで NSAttributedStrings の描画を行いたいのですが、描画時に使用される適切な高さを計算するのに問題があります。これまでのところ、私は試しました:

  1. を呼び出し- (NSSize) sizeますが、文字列が望む幅を与えるため、結果は(この目的では)役に立ちません。

  2. 図面で使用しているのとまったく同じように、- (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options必要な幅とオプションで形作られた四角形で呼び出します。NSStringDrawingUsesLineFragmentOrigin結果は...わかりにくいです。確かに私が探しているものではありません。(このCocoa-Dev スレッドを含む多くの場所で指摘されているように)。

  3. 一時的な NSTextView の作成と実行: tmpView のフレームを照会すると、幅は希望どおりであり、高さは多くの場合正しいです...長い文字列になるまで、必要なサイズの半分になることがよくあります。(ヒットする最大サイズはないようです。1 つのフレームは高さが 273.0 (約 300 では短すぎます)、もう 1 つのフレームは 478.0 (わずか 60 程度では短すぎます) になります)。
    [[tmpView textStorage] setAttributedString:aString];
    [tmpView setHorizontallyResizable:NO];
    [tmpView sizeToFit];

他の誰かがこれを管理している場合は、ポインタをいただければ幸いです。

0 投票する
1 に答える
635 参照

cocoa - テキストビュー用の複数のUNDOマネージャー

モデルオブジェクトに格納されている属性付き文字列からコンテンツを取得するテキストビューがあります。これらのモデルオブジェクトのいくつかをドロワーにリストし、ユーザーが1つをクリックすると、テキストビューがそのコンテンツを交換します。

ここで、元にたりマネージャーをテキストビューに交換する必要があります。モデルオブジェクトでundoマネージャーを初期化し、undoManagerForTextViewを使用してテキストビューに戻しますが、何かが正しくありません。

戦略的に配置されたロギングステートメントは、すべてが計画どおりに機能していることを示しています。起動時に、新しいモデルオブジェクトが正しく初期化され、null以外のUNDOマネージャーが常にテキストビューによってプルされます。しかし、実際に元に戻すことになると、私は自分が望む動作を得ることができません。

ウィンドウを開き、何かを入力してcmd + zを押すと、元に戻すことができます。ウィンドウを開き、何かを入力し、テーブルで新しいモデルを選択し、何かを入力し、最初のモデルに戻って元に戻そうとすると、ビープ音だけが鳴ります。

ドキュメントの何かが私に眉を上げさせました。それは、いくつかのモデルオブジェクトで元に戻すことができないことを意味するからです。

デフォルトの元に戻すおよびやり直しの動作は、フィールドまたはセルが最初のレスポンダー(つまり、キーボードアクションのフォーカス)である限り、テキストフィールドおよびセル内のテキストに適用されます。挿入ポイントがフィールドまたはセルを離れると、以前の操作を元に戻すことはできません。

0 投票する
3 に答える
3384 参照

cocoa - NSAttributedString をペーストボードにコピー

Cocoa は初めてで、NSAttributedString をペーストボードにコピーする方法を見つけようとしています。ドキュメントを調べましたが、NSPasteboardItem を使用する必要があるかどうかわかりません。

通常の NSString をコピーする必要があるのは次のとおりです。

NSAttributedString を設定するにはどうすればよいですか?

ありがとう