我從NSTextView,其中,在初始化時,設置了自動拼寫與setContinuousSpellCheckingEnabled(true)
和聚焦時,本身設置爲第一響應者檢查繼承的類。根據迄今爲止所見到的所有問題和答案,似乎這應該足以確保拼寫檢查程序正常工作。NSTextView自動拼寫檢查工作不正常
但是當我鍵入胡言亂語到視圖,除非這個詞比較快打字也不會強調任何拼寫錯誤的單詞。也就是說,當我在大約半秒的時間內輸入「asdf」後面的空格時,拼寫檢查程序會正確地強調它。但是,如果我輸入「asdf」的速度更慢,或者即使我快速輸入「asdf」,但在添加空格之前等待一秒鐘,也不會在該單詞上顯示下劃線。
這導致了同一字的可能性鍵入具有衝突的拼寫評價多次,如下所示。
在測試過程中,甚至有一個時間,我看到了一個紅色下劃線出現的一瞬間,然後立即從拼寫錯誤的單詞我輸入了消失。
另外值得注意的是,如果焦點離開和重點後重新進入文本視圖,約1秒後所有的波浪下劃線出現在所有的拼寫錯誤的單詞的正確地點。然而,繼續輸入附加文本仍然會引起我上面提到的問題。
這意味着,拼寫錯誤的單詞不會被強調,除非
他們是不合理的快速輸入
他們一直聚焦視圖
正如我之前說過的,我已經看過所有相關的SO線程,並且我也玩過makeFirstResponder()
和廣泛的,我剛剛用完想法。
快速更新,自上週以來,我已經嘗試了一些事情,其中一個顯示的諾言。使用TextView函數setSpellingState
,我能夠以編程方式強制紅色波浪下劃線出現在我請求的TextView中的任何位置。雖然這看起來很有希望,但是使用這個函數卻發現了另一個錯誤行爲:當我調用這個函數並在視圖的某處出現紅色波浪曲線時,這條波浪線只會短暫出現。出現扭曲的紅色下劃線,經過與我在「asdf」錯誤中看到的大致相同的延遲後,波浪線消失。這導致我認爲這個問題可能是由覆蓋一些Cocoa API的C#代碼引起的。
這是一個OSX問題?爲什麼像我輸入拼寫檢查程序是否會正確劃分單詞的決定性因素的速度那樣隨心所欲?
P.S.該代碼的語法與Objective-C語法不同,因爲我使用的是MCocoa,它是一種爲Cocoa API提供機器生成包裝的工具。我目前用來引用NSTextView的C#代碼是從MacOSX 10.5 SDK生成的