2016-11-09 13 views
0

NSTextViewを継承するクラスがあります。初期化時にsetContinuousSpellCheckingEnabled(true)という自動スペルチェックが設定され、フォーカスを当てれば最初のレスポンダとして設定されます。私が今までに見てきたすべての質問と回答に基づいて、これはスペルチェッカーが適切に動作することを保証するのに十分なはずです。NSTextViewの自動スペルチェックが正しく機能しない

しかし、私が見た目に不器用な言葉を入力すると、単語が比較的速く入力されない限り、スペルの間違った単語に下線が引かれません。つまり、「asdf」と入力した後にスペースを1秒半ほど入れると、スペルチェッカーが適切に下線を引いています。しかし、私が "asdf"を遅く入力した場合、または "asdf"と入力してもすばやくタイプしてもスペースを追加する前に1秒待っても、下線は表示されません。

これにより、以下に示す競合するスペルの評価を複数回入力した同じ単語が表示される可能性があります。私は赤い下線が一瞬のために表示され、その後すぐに、私が入力したスペルに誤りの単語から消えましたどこ

は、テスト中に一度もありました。

また、焦点が離れるとテキストビューに戻ると、ピントが合ってから約1秒後にすべてのスペックルアンダーラインがすべてのスペルミスの下に正しい場所に表示されます。しかし、追加のテキストを入力すると、上記の問題が発生します。

これは、彼らはすぐに不当に彼らは前のビュー

を中心にテキストビューに入力されていた

  • を入力している

    1. ない限り、スペルミスに下線をされないことを意味します

      私が前に言ったように、関連するすべてのスレッドを見て、makeFirstResponder()とを呼び出して遊んでいますは広範囲に渡り、私はちょうどアイデアがなくなってしまった。

      先週から私はいくつかのことを試しましたが、そのうちの1つが約束を示しています。 TextView関数setSpellingStateを使用すると、私はプログラムして、赤いくすんだ下線をTextView内のどこにでも表示させることができます。この関数を呼び出すと、ビューのどこかに赤い塊が表示されると、詰まり線は短時間しか表示されません。波打つ赤い下線が表示され、「asdf」バグで見たのとほぼ同じ量の遅延の後、波線が消えます。これは、問題がCocoa APIのいくつかをオーバーライドするC#コードで発生する可能性があると考えるようになります。

      これはOSXの問題ですか?スペルチェッカーが正しく単語に下線を付けるかどうかを判断する要素を入力する速度として、何かが恣意的なのはなぜですか?

      P.S.このコードは、Cocoa APIのマシン生成ラッパーであるMCocoaを使用しているため、Objective-C構文とは異なる構文になっています。現在NSTextViewを参照するために使用しているC#コードは、MacOSX 10.5 SDKから生成されました

  • 答えて

    0

    setSpellingStateを使用すると、setSpellingStateと自動スペルチェッカーの競合状態のために、スクイブルラインが表示されてすぐに消えます。両者が同時に単語を強調しようとすると、互いに打ち消し合うように見える。自動スペルチェッカーの動作が最初からこの問題の原因となっているので、setContinuousSpellCheckingEnabled(true)setContinuousSpellCheckingEnabled(false)に置き換え、自動スペルチェッカーが自分自身の実装を妨害するのを防ぎました。これで、どのように単語を入力しても、赤い波線の下線が正しく表示されます。それはもちろん:)のスペルが間違っています限り、NSTextViewの自動スペルチェックの問題を持つ人のため

    、私は単にsetContinuousSpellCheckingEnabled(false)を使用して、自動スペルチェックを無効にすることができた、とNSSpellChecker.shared()を使用して独自の自動スペルチェッカーにハッキングすることはスペルミスをチェックします単語setSpellingStateを入力して、スペルの間違ったスペルインジケータをNSSpellCheckerのスペルミスの下に強制的に描画します。これはすべてtextViewDidChangeSelectionの実装の中で行われていたため、入力を変更したり、不完全な単語からカーソルを移動したり、テキストを貼り付けることによって、選択が変更されるたびに単語を確認することができました。

    関連する問題