내 코코아 응용 프로그램에서 NSTextField (있는 그대로)와 NSScrollView (하위 클래스)가있는 창이 있습니다. 텍스트 필드와 스크롤링 뷰를 포함하는 NSView를 관리하는 NSViewController가있다.텍스트 필드와 스크롤보기를 포함하는 코코아보기의 탭 처리
앱 시작시 NSTextField에 포커스가 있고 입력하면 해당 텍스트 상자에 문자가 입력됩니다. Tab 키를 누르면 포커스가 사라집니다. 그러나 NSScrollView와 같은 인터페이스의 다른 요소는 포커스를 얻지 못합니다. 어떤 핵심 행사가 어디로 가고 있는지 말할 수 없습니다.
NSScrollView에 포커스를 전달하여 키 다운 이벤트 (예 : 화살표 키, 암시 적 검색 등)에 영향을 줄 수있는 방법은 무엇입니까?
스크롤보기 (문서보기)에 하위보기가 여러 개 있지만 하위보기가 하나도없는 경우 텍스트 편집 필드가 표시되지 않습니다. 그러나 몇 가지 하위보기에 하위 하위보기 (바닐라 NSViews)가있는 경우 Tab을 반복적으로 두 번 누르면 스크롤보기에 초점이 표시되지 않지만 결국 텍스트 편집 필드로 돌아갑니다. 주기 길이는 하위 하위보기의 수와 관련이있는 것으로 보입니다. – jsbox
하위 하위보기에서 "acceptsFirstResponder"를 해제하면 상황이 정리됩니다. 그들이 여전히 "acceptsFirstResponder"가 YES로 설정되어야한다고 생각한 이유는 mouseDown 이벤트를 허용한다는 것입니다. 그러나 스크롤 뷰에 대해 "acceptsFirstResponder"를 설정해도 기본 동작이 변경되지는 않으므로 여전히 미스테리입니다. – jsbox
어떻게 스크롤 뷰가 포커스를 얻지 못하고 있다고 판단합니까? 'focusRingType'을 변경해 보셨습니까? 기본값이 none 일 수 있으므로 시각적으로 변경되지 않습니다. 어쨌든, 내가 말했듯이, 문서보기 자체가 포커스를 받아들이는 것이 더 일반적입니다. 예를 들어, 테이블보기가 스크롤보기 안에있는 경우 스크롤보기가 아닌 포커스를 허용하는 테이블보기입니다. –