2017-11-30 24 views
0

을 열 때 초점을 푼다. 값이 변경되면 NSOutlineView가 포함 된 NSPopover가 표시되고 사용자가 텍스트를 입력 할 때 목록이 업데이트됩니다. 사용자는 NSOutlineView에서 결과를 선택할 수 있습니다.맥 OS NSTextField있는이 NSPopover가 내 맥 OS 응용 프로그램에서 검색 자동 완성을 만들려고 노력하고

그러나 NSOutlineView를 활성화하여 결과를 클릭하면 NSPopover가 열릴 때 NSTextField가 포커스를 잃습니다. NSOutlineView에 대해 isEnabled를 false로 설정하면 NSTextField는 포커스를 유지하지만 목록에서 결과를 선택할 수 없습니다.

NSOutlineView를 비활성화하지 않고 NSTextField에 집중할 생각이 있습니까?

감사합니다.

나는 해결책 발견
+0

실험 : 개요보기의 'refusesFirstResponder'를 켜십시오. 이것은 IB의 확인란입니다. – Willeke

+0

나는 이미 이것을 시도했지만 아무 것도 변경하지 않는다 ... – macuserlambda

답변

0

: 나는 selectText를 호출하면

textField.selectText(self) 
textField.currentEditor()?.selectedRange = range ?? NSMakeRange(0, 0) 

:

let range = textField.currentEditor()?.selectedRange 

그리고 후 :

이 NSPopover.show()하기 전에, 나는 현재에 textField 선택한 범위 저장을()를 선택하면 모든 텍스트가 선택됩니다. 또한 선택한 범위를 저장하면 커서 위치가 유지됩니다.

+0

'becomeFirstResponder'의 문서는 "절대로이 메소드를 직접 호출하지 않는다."라고 말한다. – Willeke

+0

@Willeke ok, 대신 지금 textField.selectText (self)를 사용합니다. – macuserlambda