2

ユーザーが入力している間、美しいRTFスタイルのテキストに自動的に翻訳される「マークアップされた」入力を受け取ることができるNSTextViewを構築しようとしています。

アイデアは、ユーザーが「プレーンテキスト」形式でテキストを入力できるようにすることですが、その場で「美化」することです。

H1 A quick list:
* first item
* second item

ヘッダーフォントを含む最初の行に変換され、その後に箇条書きが続きます。

私はこれを行うための潜在的な方法をたくさん見つけましたが、テキストシステムは(理由で)非常に複雑であり、適切なものがすでに組み込まれている場合は「自分で料理する」ことを始めたくありません。ところで、私はSnowLeopardのみのAPIに満足しています。

私が最初に考えたのは「データ検出器」でしたが、これを行うためのパブリックAPIが見つかりません。

それで道の終わりに達したので、私は新しい「テキスト入力ソースAPI」に目を向けました。これはあらゆる種類のことを行いますが、WWDC2006のプレゼンテーション「テキスト入力を担当する」の「データ駆動型入力方式」セクションは私の文脈では興味深いようです。しかし、その単一のプレゼンテーションスライドを超えて、どこにも何も存在しないように見えるので、それはまた少し行き止まりです。

最後に、完了機能と自動修正も提供するはずのNSSpellCheckerクラスを調べましたが、これを要件に再利用する方法もわかりません。

現時点では、NSTextStorage全体を手動で再解析し、ユーザーが入力をやめたときに自分で変更を加えたいと思っています。しかし、このフォーラムには賢い頭がいると思います。

正しい方向へのアドバイスやアドバイスをいただければ幸いです。

4

1 に答える 1

4

データ検出器もスペルチェッカーもこのタスクには適していません。すでに持っているパーサー/フォーマッターに入力を渡す方法を探しているだけだとすると、テキストシステムとのインターフェースはそれほど難しくありません。NSTextStorageへの編集を処理することで正しい方向に進んでいます。

これらの線に沿って、ユーザーが停止したときに全体を再解析する必要はありません。テキストシステムは変更された範囲を送信し、それらの変更に対応する(さらには手に負えない変更を拒否する)機会を提供します。すべての変更(入力、貼り付け、削除など)はこれを介して行われるため、これが介入したいポイントです。

見出しと箇条書きを扱っているので、変更された範囲の囲み段落を取得します。これにより、簡単に発見でき、達成しようとしていることに完全に適合する、優れた丸い作業単位が得られます。

幸運を!

于 2009-12-07T16:26:12.430 に答える