이라는 NSTextView
에서 입력을 캡처하는 데 사용되는 응용 프로그램에 keyDown
함수가 있습니다. 일부 전환은 입력으로 수행되며 NSAttributedString
으로 다시 입력되어 NSTextView
에 다시 입력됩니다.keyDown이 NSTextView를 즉시 업데이트하지 않습니다.
현재 잘 작동하지만 문제는 다른 키를 누를 때까지 keyDown
의 텍스트 상자에 입력 된 값이 textInput.textStorage?.string
에 추가되지 않는다는 것입니다.
textInput
에 텍스트
abcde
아무것도 더를 입력 한 다음
func keyDown()
안에 내가
textInput.textStorage?.string
에 액세스하려고 예를 들어
, 그것은 abcd
를 반환합니다. 여기
keyUp
의 문제가 있지만, 내가
keyUp
를 사용한다면
override func keyDown(with event: NSEvent) {
let bottomBox = textInput.textStorage?.string // This returns one character short of what is actually in the text box
if let bottomBox = bottomBox {
var attribute = NSMutableAttributedString(string: bottomBox)
// Do some stuff here with bottomBox and attribute
// Clear and set attributed string
textInput.textStorage?.mutableString.setString("")
textInput.textStorage?.append(attribute)
}
}
,이 문제가되지 않는 사용자는 키 속성을 보유하고있는 경우 NSAttributedString
에서 사용자가 키를 놓을 때까지 설정되지 않습니다.
keyDown
함수 중에 프로그래밍 방식으로 keyDown 이벤트를 해제하거나 keyUp 이벤트를 생성하는 방법이 있었지만 아무 것도 찾을 수없는 것 같습니다.
해결 방법이 있습니까?
"응용 프로그램에 keyDown 함수가 있습니다." –
keyDown 이벤트를 모니터링하는보기 컨트롤러 –
NSEvent를 사용하지 마십시오. 알림을 사용하십시오. –