구체적으로 말하자면, 편집을 허용하지 않고 NSTableCellView
에서 토큰 방식으로 데이터를 표시하기 때문에 마우스 이벤트를 무시하고 싶습니다. NSTokenField
.NSControl (예 : NSTokenField)에서 마우스 이벤트 무시 방법
토큰 필드를 enabled = NO
으로 설정하면 토큰이 회색으로 표시되고 텍스트를 읽기 어려워집니다.
토큰 필드의 을 설정하면 토큰 필드의 모양을 그대로 유지하면서 편집을 막을 수 있습니다. 토큰 위로 마우스를 가져 가면 불이 켜집니다. 내가 그걸 막을 수 있다면, 나는 사업에 종사 할거야.
뭔가 서브 클래스를 만들고 약간의 NSResponder
메서드를 재정의해야한다고 생각합니다.하지만 할 일이 확실하지 않습니다. NSTokenField
을 서브 클래스 화하고 mouseEntered:
및 mouseMoved:
을 무시하려고했지만 아무 것도 작동하지 않았습니다.
필드는 아마도 [추적 영역] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTrackingArea_class/Reference/Reference.html)을 사용하여 마우스 입력/나가기를 얻었을 것입니다 이벤트. 'mouseEntered :'를 왜곡 한 이유를 정확히 모르겠지만, 서브 클래 싱되지 않은 필드에서'[field setTrackingArea : nil]'을 시도해보고 무슨 일이 일어나는 지 볼 수 있습니다. –
그 점을 지적 해 주셔서 고맙습니다. 클래스를 만들 때'drawRect :'가 오버라이드되어 아무 것도 수행하지 못했습니다. 나는 for ([tokenField trackingAreas]의 NSTrackingArea * trackingArea)를 시도했다. { [tokenField removeTrackingArea : trackingArea]; }',하지만 주사위는 없습니다. 또한,'mouseEntered :'에 덧붙여'mouseMoved :'를 오버 라이딩 해 보았습니다 만, 그 중 하나는 작동하지 않았습니다 ... – yuji
@yuji : 테스트 할 순간 내 컴퓨터가 없습니다. 아이디어. 당신은이 클래스를 위해 당신 자신의 대체물을 쓰길 원할 것입니다. 예를 들어'BWToolkit'을보십시오. –