私はObjective-CとCocoaをゆっくりと学習しています。テキストビューでキーイベントをキャプチャする方法は、委任を使用することだけですが、役に立つドキュメンテーションや例を見つけるのは難しいです。溶液。誰かが正しい方向に私を指すことができる、またはいくつかの直接手助けを供給することができますか?NSTextViewでキーイベントをキャプチャする最も良い方法は?
答えて
一般に、実装する方法は、必要な機能をビューのコントローラに追加し、デリゲートを設定するだけです。たとえば、ビューの読み込み時にコードを実行するには、ビューをコントローラに委譲してawakeFromNib関数を実装します。これは継承NSResponderメソッドではなく、NSTextViewであること
- (void)keyUp:(NSEvent *)theEvent
注:
だから、これを実装する、あなたのコントローラは、テキストビューのデリゲートであることを確認し、テキストビューでキーを押しを検出すること、および方法。
あなたが実際に達成しようとしていること、つまり、NSTextViewの重要なイベントをキャプチャすると考える上位目標は、私たちに伝えることが重要です。
たとえば、NSText フィールドで重要なイベントをキャプチャする方法を聞いたときに、実際にフィールドの入力を検証する方法があります。これは、フィールドのフォーマッタを、NSFormatterのインスタンス(Cocoaに含まれているフォーマッタでも、カスタムのものでも)に設定し、キーストロークを直接処理することではありません。
この例では、実際に何を達成しようとしていますか?
私はいくつかの掘り下げを行いました。自分の質問に対する答えを見つけました。私は下にそれを得るでしょうが、答えた2人の友達に感謝します。 Stack Overflowはすでに素晴らしいサイトだと思います。ベータ版が終わったばかりのMac開発者が増えることを願っています。これは、プラットフォームに移行しようとしている他の開発者にとって大きなリソースになる可能性があります。
私は、Dannyの提案によれば、私の回答を代表団で見つけました。私がDannyのポストから理解できなかったことは、デリゲートするオブジェクトにデリゲート対応のメソッドのセットがあり、デリゲートがそのイベントを実装する必要があるということでした。 TextViewではtextDidChangeメソッドを見つけることができました。これは、キープレスを単純にキャプチャするよりも、私が望むことを達成しました。したがって、コントローラでこれを実装した場合:
- (void)textDidChange:(NSNotification *)aNotification;
私は編集中のテキストに応答できます。もちろん、他の方法もありますし、私は彼らと一緒に遊ぶことに興奮しています。なぜなら、わたしは私のようにたくさんのことを学びます。もう一度ありがとう、みんな。シンタックスハイライトのためだけ先端
:
は一度に全体のテキストビューをハイライトしないでください - それは非常に遅いです。また、最後に編集したテキストを-editedRangeで強調表示しないでください。ユーザーがテキストビューに大きなテキストを貼り付けると、非常に遅くなります。
代わりに、あなたは次のように行われている目に見えるテキストの強調表示する必要があります。そして、あなたはあなたのハイライトコードにvisibleRangeを養う
NSRect visibleRect = [[[textView enclosingScrollView] contentView] documentVisibleRect];
NSRange visibleRange = [[textView layoutManager] glyphRangeForBoundingRect:visibleRect inTextContainer:[textView textContainer]];
を。
- 1. Clearcaseで最も良い方法は?
- 2. あいまいなテキストセグメントをキャプチャする最良の方法は何ですか?
- 3. コレクションをロックする最も良い方法は何ですか?
- 4. 自分のアンドロイドアプリで送受信されたパケットをキャプチャする最も良い方法は何ですか?
- 5. FlexでWYSIWYGを作成する最も良い方法は?
- 6. SQLiteでSoapEnvelopeを保存する最も良い方法は?
- 7. ASP.NETでレコードをカスタム編集する最も良い方法は?
- 8. Javaでラジオストリーム(shoutcast)を再生する最も良い方法は?
- 9. ReactJSでnull値を処理する最も良い方法は?
- 10. codeigniterでカレンダーを拡張する最も良い方法は?
- 11. SQLiteでピボットテーブルを実行する最も良い方法は?
- 12. C++でインターフェイスを通過する最も良い方法は?
- 13. vert.xでverticleを実行する最も良い方法は?
- 14. NHibernateでセッションを管理する最も良い方法は?
- 15. Cで配列をシフトする最も良い方法は?
- 16. javascriptでキューを実装する最も良い方法は?
- 17. httpでセキュリティを実装する最も良い方法は
- 18. HTML5 Canvasでレイヤーを作成する最も良い方法は?
- 19. JSで雪をアニメーションする最も良い方法は?
- 20. サーバー間でセッションを維持する最も良い方法は?
- 21. React-nativeでStripeを実装する最も良い方法は?
- 22. Django 1.3で重複をマージする最も良い方法は?
- 23. angular2でカスタムモーダルダイアログを作成する最も良い方法は?
- 24. Reduxでアクションを入力する最も良い方法は? (フロータイプ)
- 25. PythonでJavaを生成する最も良い方法は?
- 26. Magento - フォームをブロックで処理する最も良い方法は?
- 27. VueをExpressで使用する最も良い方法は?
- 28. Pythonでリストをシフトする最も良い方法は?
- 29. herokuコンソールでデータスクリプトを実行する最も良い方法は?
- 30. テキストボックスのCtrl-Vキーイベントをキャプチャする方法
keyUpは、デリゲートに入れると呼び出されません。 NSTextViewをサブクラス化してそこに置く必要があります。 –