問題タブ [nstextstorage]

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 に答える
613 参照

ios - NSTextStorage 構文マークダウン

iOS/osx の構文マークダウンを書いています。

NSTextStorage のサブクラスです。iOSではうまく機能しますが、OSXでは(コードを変換した後、UIColorをNSColorに、UIFontをNSFontに)非常にうまく機能します。現在の行の最後に書くとうまくいきますが、キャレットの位置をテキストの中央に変更すると、1文字を入力した直後にキャレットの位置が行末に変わります。これは OSX でのみ発生します。これは、IOS ではうまく機能するためです。

問題があること- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)rangeはわかっていますが、修正方法がわかりません...何か助けはありますか?

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

ios - NSTextStorage サブクラスが絵文字を処理できず、場合によってはフォントが変更される

NSTextStorageリンクの強調表示を行うためにサブクラス化を行っており、このトピックについてできる 限り多くのことを読みました。絵文字を入力するまで、すべて正常に動作します。

私のサブクラス:

複雑なことは何もありません。次に、悪名高い文字を入力すると、何らかのランダムな理由で Courier New に切り替わります。

Courier New以外は何でも!

今、私はキャラクターを選んでいます.この狂気を引き起こす他の人もいます. 入力時にフォントを照会しましたが、System > Apple Emoji > Courier New から取得できます。

processEditing()また、セミが問題を解決するフォントを設定しようとしました。これにより、余分なスペースが追加されます(シミュレーターではありません)。そして、値をハードコーディングしています == 悪い。

究極の質問:

私は何を間違っていますか?開発者が NSTextStorage をサブクラス化したと確信している他の人の実装では、この問題は見られません。

注: objc.io のデモ アプリでも同じ問題が発生していることを確認できます。

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

ios - iOS 9: UITextView の属性付きコンテンツをカスタム NSTextStorage で更新する方法

UITextViewカスタム属性を持つ属性付き文字列を表示するためにを使用しています。このため、独自の を実装することにしましたNSTextStorage。そのため、各処理の後にカスタム属性を挿入できます。

を表示する必要があるときはいつでも、次のUITextViewようにテキストを設定していました。

textView.attributedText = mutableText

ただし、新しいNSTextStorageものを使用すると、更新しattributedTextても UITextView に影響がないように見えます。作成されたプレースホルダー テキストが表示されるだけです。

attributedTextのプロパティを、UITextViewに格納されている attributedStringに接続するにはどうすればよいNSTextStorageですか? これを可能にするには、両方のオブジェクトでどのメソッドをオーバーライドする必要がありますか?

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

ios - テキストが追加されたときに NSTextStorage に基づく UITextView が更新されない

以下は、NSTextStorage に基づく UITextView の簡単な例です。「doAction1」は、何らかの UI ボタン​​をクリックすると起動されます。ドキュメントを読んで、編集の開始/終了ブロックで NSTextStorage を更新すると、ビューも自動的に更新されるという印象を受けました。

ただし、それは起こらないようです。以下の例では、「...World!」が追加されています。NSTextStorage に追加されますが、UITextView にはそれが反映されず、引き続き「Hello」が表示されます。何か案が?

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

fonts - カスタム NSTextStorage: 絵文字はデフォルトでは表示されません

カスタム NSTextStorage サブクラスの絵文字に問題があります。このクラスは、渡された属性を保存しません。代わりに、独自のものを生成します。

これはほとんどうまくいきます。ただし、文字列に絵文字がある場合、それらは単に表示されません。NSTextView がテキスト ストレージに対して行う呼び出しを調べると、テキスト ビューは、絵文字が表示されるたびに、絵文字範囲のフォント属性を AppleColorEmoji フォントに設定しようとするようです。「真の属性」のソースとしてテキスト ビューに依存している場合は問題ありませんが、プログラムをそのように動作させたくありません。私の場合、テキスト ストレージは、すべての属性の唯一のベンダーである必要があります。テキストビューが送信するものを属性ごとにリッスンすることはできません。

文字列内の絵文字を手動で検出し、AppleColorEmoji フォントを手動で設定する必要がありますか? それとももっと良い方法がありますか?フォールバック フォントを使用して、欠落している文字を含むフォントを自動的に検索することは既に試しましたが、それらの方法を使用しても絵文字はカバーされないようです。

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

ios - 文字を削除すると NSTextStorage サブクラスがクラッシュする

私はいくつかの問題を引き起こしている NSTextStorage のサブクラスを持っています。次の操作を行うたびにクラッシュします。

  1. 最初の行にテキストを入力します
  2. Return キーを押して次の行に移動します
  3. 少なくとも 2 文字を入力してください
  4. バックスペースを押す

私が得ているエラーはTerminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The index -4097 is invalid'

本当の問題は、エラーを自分のコードまでさかのぼって追跡できないことです。デバッグによって得られる最も遠いものは、 getssuper.processEditingのオーバーライド内で呼び出されることです。processEditingスタックトレースからも何も得られません。

編集: さらにテストを行ったところ、これは iOS 9 以降でのみ発生することがわかりました。8 以下はクラッシュしません。