2016-11-09 1 views
0

초기화 할 때 setContinuousSpellCheckingEnabled(true)으로 자동 맞춤법 ​​검사를 설정하고 초점을 맞추면 NSTextView를 상속 한 클래스가 첫 번째 응답자로 설정됩니다. 지금까지 본 모든 질문과 답변을 바탕으로 맞춤법 검사기가 올바르게 작동하는지 확인하기에 충분해야합니다.NSTextView 자동 맞춤법 ​​검사가 제대로 작동하지 않습니다.

그러나보기에 횡설수설을 입력하면 비교적 빨리 단어를 입력하지 않는 한 맞춤법이 틀린 단어에 밑줄이 표시되지 않습니다. 즉, "asdf"라고 입력하면 약 30 분의 1 초 안에 공백을 넣고 맞춤법 검사기가 제대로 밑줄을 긋습니다. 그러나 "asdf"를 더 느리게 입력하거나 "asdf"를 빠르게 입력했지만 공백을 추가하기 전에 잠시 기다리더라도 단어에 밑줄이 표시되지 않습니다.

이렇게하면 아래와 같이 철자가 일치하지 않는 단어가 여러 번 입력 될 수 있습니다. 나는 빨간색 밑줄이 순식간에 게재 한 다음 바로 내가 입력했던 맞춤법이 틀린 단어에서 사라 본 곳

은 테스트 동안도 한 번 있었다.

또한 주목할 가치가있는 점은 포커스가 사라지고 텍스트 뷰에 다시 들어가면 포커스가 약 1 초 후에 모든 구불 구불 한 밑줄이 모든 철자가 틀린 단어 아래 올바른 지점에 나타납니다. 그러나 추가 텍스트를 입력하면 앞서 언급 한 문제가 발생합니다.

이 그들은 신속하게 부당 그들은 전에보기

를 중심으로 텍스트 뷰에 입력했다

  • 를 입력하는

    1. 하지 않는 맞춤법이 틀린 단어에 밑줄되지 않음을 의미

      앞서 모든 관련 SO 스레드를 살펴본 후에 makeFirstResponder() 및에 대한 호출을 수행했습니다.은 광범위하게 사용되며 아이디어가 부족합니다.

      지난 주부터 몇 가지를 시도해 보았습니다. 그 중 하나가 약속을 보여줍니다. TextView 함수 setSpellingState을 사용하면 프로그래밍 방식으로 빨간색 구불 구불 한 밑줄을 TextView 내의 아무 곳에 나 표시하도록 할 수 있습니다. 이것이 유망 해 보이지만,이 함수를 사용하면 대신 다른 버그가있는 동작을 발견했습니다.이 함수를 호출하고보기에 빨간색 구불 구불 한 모양을 표시하면 구불 구불 한 선이 잠시 표시됩니다. 구불 구불 한 빨간 밑줄이 나타나고, "asdf"버그를 본 것과 대략 같은 양의 지연 후에, 구불 구불 한 선이 사라집니다. 이 문제는 Cocoa API 중 일부를 오버라이드하는 C# 코드에서 문제가 발생할 수 있다고 생각하게합니다.

      이 문제는 OSX입니까? 왜 맞춤법 검사기가 단어에 밑줄을 긋게되는지를 결정하는 요소를 입력하는 속도가 무의미한 이유는 무엇입니까?

      P. 이 코드는 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 구현 내에서 이루어 졌으므로 입력을 변경하거나 불완전한 단어에서 커서를 이동하거나 텍스트를 붙여 넣음으로 선택이 변경 될 때마다 단어를 확인할 수 있습니다.

    관련 문제