내가 이해할 수없는 일에, C++에서 NSResponder
같은 클래스를 구현하기 위해 노력하고있어이 있습니다 :첫 번째 응답자가 아닌 NSButton을 클릭 할 수있는 이유는 무엇입니까?
모든 키보드/예를 들어 NSTextField있는 현재의 경우, 그래서 마우스 상호 작용은 첫 번째 응답자로 전송됩니다 첫 번째 응답자, 동일한보기의 다른 NSButton
이 클릭 된 것을 어떻게 알 수 있습니까? 텍스트 필드가 마우스 클릭을 원하지 않으면 슈퍼 뷰에 텍스트 필드를 보내고 슈퍼 뷰는 뷰 컨트롤러로 텍스트 필드를 보냅니다. 따라서 마우스 클릭 이벤트는 결코 버튼에 도달하지 않습니다.
이것은 꽤 분명하지만 나는 그 순간에 내 머리를 감쌀 수 없습니다.
마우스가 버튼 밖으로 움직이는 경우, 마우스 이벤트가 전송되지 않으면 마우스가 더 이상 존재하지 않는다는 것을 어떻게 알 수 있습니까? 예를 들어 마우스를 움직이면 이미지가 마우스 오버 이미지로 바뀌고 버튼이 일반 이미지로 다시 바뀌어야합니까? – levidhuyvetter
먼저, 버튼이'-mouseDown :'구현에서 내부 이벤트 루프를 시작합니다. 그래서, 마우스 업까지 * 모든 이벤트를 가져옵니다. 그러나 그렇지 않은 경우에도 링크 된 동일한 문서에서 다음과 같이 말합니다. "마우스 드래그 및 마우스 업 이벤트는 일반적으로 가장 최근의 마우스 다운 이벤트를 수신 한 동일한보기로 전송됩니다." –
나는 당신의 대답을 몇 번 읽었으며 당신이 만든 구별을 이해하는 데 잠시 걸렸으므로 미래의 검색을 위해 여기서는 흑백으로되어있다. 1) 마우스 클릭에 대해 마우스 아래 물건이 이벤트를 받는다. 메시지, 예. NSButton. 2) 키보드의 (대부분의) '키 누름'의 경우 창 첫 번째 응답자가 이벤트 메시지를 수신합니다. – 7stud