NSComboBox 팝업을 프로그래밍 방식으로 닫을 수 있습니까?NSComboBox 팝업 방식으로 팝업 닫기
팝업이 열려있을 때 NSComboBox에 버그가있는 것처럼 보이며 컨트롤이 제거 된 다음 해제됩니다. 어떤 이유로 NSComboBox의 dealloc은 파기 전에 팝업을 지우지 않습니다.
편집 : 분명히하기 -이 버그는 팝업 목록을 열 때만 발생합니다. 그렇지 않으면 컨트롤이 적절하고 깨끗하게 해제됩니다.
수정 편집 : 다음은이를 재현하는 방법입니다.
- 새 코코아 응용 프로그램을 만듭니다.
- 자동 참조 횟수를 끕니다.
- @ (applicationDidFinishLaunching)에서는 새 NSComboBox를 만들어 멤버에 저장합니다.
- 콤보 상자를 창의 contentView에 추가하십시오.
- 키보드 바로 가기를 사용하여 새 메뉴 항목을 만들고 선택기에 바인딩하십시오.
- 메뉴 항목의 선택기에서 :보기에서 콤보 상자를 제거하고 멤버를 놓습니다. 다시 Nil로 설정하는 것을 잊지 마십시오.
- 응용 프로그램을 실행하십시오.
- 콤보 상자를 클릭하면 팝업이 표시됩니다.
- 바로 가기를 사용하여 콤보 상자를 제거하십시오.
내가 전화'abortEditing' 닫을 것이라고 생각할 겁니다으로 설정 모델 키 경로에 메뉴 항목의 활성화 속성을 바인딩합니다. "파괴하기 전에 팝업을 지우지 말라"는 것에 대해 당신이 무슨 말을하는지 잘 모르겠습니다. 팝업은 'NSComboBox'의 일부이므로 공개해야합니다. 어떻게 든 그것을 유지하고 있습니까? –
예, 당신은 컨트롤이 공개되었을 때 팝업을 파괴해야한다는 것이 옳았지 만 버그는 아닌 것 같습니다. 깨끗한 프로젝트로 쉽게 복제 할 수 있습니다. – AndyTang
@ (중단) 작동하지 않습니다! 그러나 팝업이 닫히지 않았으므로 팝업이 계속 표시됩니다. 그러나 @ (abortEditing)로 인해 이미 제거 된 항목에 액세스하려고 시도하지 않으므로 더 이상 충돌하지 않습니다. – AndyTang