나는 NSCollectionView를 가지고 있으며 NSArrayController를 사용하여 상당히 잘 동작한다. 내 컬렉션보기 항목은 다중 선택이 가능하도록 구성되어있어서 만족 스럽습니다. 그러나 컬렉션 뷰 내에서 마우스 끌기 이벤트가 발생하면 선택 사각형이 그려집니다. 이 선택 사각형 그림을 비활성화하고 NSCollectionView에 다중 선택을 유지하려면 어떻게합니까? 어떤 도움을 주셔서 감사합니다!NSCollectionView에서 선택 사각형 그리기를 어떻게 비활성화 할 수 있습니까?
답변
NSCollectionView
은 매우 불투명 한 클래스이므로 기본 동작을 쉽게 수정할 수있는 방법이 너무 많지 않습니다.
끌기 동작은 mouseDragged:
을 다시 정의하지 않고 개인 메서드 _performDragFromMouseDown:
으로 처리되는 것으로 나타납니다. 정확히 개인적인 방법은 무엇인지 모르겠습니다.
간단히 대답하면 NSCollectionView
개인 방법을 수정하는 것 외에는 선택 모양을 변경할 수 없다는 것입니다.
이 동작을 수정해야하는 경우 NSCollectionView
대신 사용자 지정보기를 사용해야 할 수도 있습니다. 와
답변 주셔서 감사합니다, 나는 mouseDragged :를 무시하고 성공했다. – ctpenrose
최신 NSCollectionView
(2015 년 출시 내가 생각?) 그것을 선택 사각형을 그리는보기를 얻기 위해 위임에 viewForSupplementaryElementOfKind
를 호출합니다.
"NSCollectionElementKindSelectionRectIndicator"
에
kind.rawValue
를 비교하여 이러한 상황을 "잡아"수
및 return NSView()
당신이을 그릴하지 않으려면.
당신이이 그것을 그릴 "NSCollectionElementKindSelectionRectIndicator"
의 rawValue를 사용하여 수동으로 만든 종류/식별자를 사용하여 collectionView.makeSupplementaryView(ofKind:
을 반환하고자 할 경우
편집 : 나는 애플 개발자 포럼에 대해 만든 이전 게시물을보고, 나는 내가 numberOfSections == 0
, 그 경우 return NSView()
을 방지해야한다고 언급했다.
나는 이것을 알아내는 데 또 다른 시도를했다. 나는 내 NSCollectionView 서브 클래스와 내 CollectionViewItem 서브 클래스 내에서 mouseDragged를 오버로드했다. 중단 점을 추가하고 마우스 끌기 중에도 호출되지 않는다는 것을 발견했습니다. 다른 장면이 장면 뒤에서 사용되는지 확인해야합니다. – ctpenrose
그래서 다중 선택이 현재처럼 작동하지만 사각형을 표시하지 않겠습니까? –
드래그에 선택 사각형을 그리지 않고 포인트 앤 클릭 및 이동 | 명령 클릭 선택을 허용하고 싶습니다. MouseDragged : 무시 했어. 이 동작은 Apple의 Mail.app에서 예를 들어 메일 메시지 제목 컬렉션보기에서 발생합니다. – ctpenrose