2011-09-23 4 views
0

인터페이스 작성기에서 입력기와 동일한 키를 설정하는 단추가 내 창에 있지만 IKImageBrowserView를 NSCollectionView로 사용하여 콘텐츠 뷰를 전환 한 후에 keyEquivalent가 무시됩니다. 는 문서에 말씀에서왜 열쇠 대응은 이스케이프와 함께 작동하지만 리턴과 함께 작동하지 않습니까?

다음의 keyEquivalent 이벤트 "특별한"처리 꽤 정직해야 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW10

.

NSCollectionViewItem과 항목의 뷰를 서브 클래 싱 중이지만 해당 서브 클래스가 해당 메소드를 재정의 할 때 performKeyEquivalent : theEvent를 얻지 못합니다.

기본 버튼 바로 옆에 취소 버튼이 있으며 esacpe 키에 매핑됩니다. 취소는 계속 작동하지만 기본 단추는 작동하지 않습니다.

Enter 키 이벤트가 처리되는 위치를 어떻게 알 수 있습니까?

편집 :

는 사실은 내가 NSCollectionView에 대해 배울하는 데 사용되는 예제 응용 프로그램에서 같은 문제를 발견했다. 창 아래쪽에 기본 버튼을 추가하여 리턴이 버튼을 트리거하지 않았지만 (fn + return)을 입력하면 버튼이 트리거되었음을 알았습니다.

IconCollection sample app from Apple

이 예에서 리턴 키 이벤트를 훔치는 무엇에 어떤 아이디어?

편집 :

나는 여기에 샘플 프로젝트를 게시 : https://github.com/watkyn/NSCollectionViewIssue. 기본 버튼이 작동하지 않는 이유는 무엇입니까?

+0

IconCollection을 실행 중입니다. 어디서나 기본 단추가 보이지 않습니다. 내가 누락 된 창문이 있니? – SSteve

+0

직접 기본 단추를 추가해야했습니다. 컬렉션보기 바로 아래에서 방을 만들었습니다. 사실 빈 컬렉션 뷰 (선택할 수 있어야 함)와 기본 버튼이있는 새 프로젝트로이 문제를 복제했습니다. 좋아 보이지 않아. –

+0

샘플 프로그램을 사용하기 위해 return/enter를하는 방법을 보여주기 위해 제 대답을 수정했습니다. – SSteve

답변

3

ReturnEnter은 두 개의 다른 키입니다. Return (미국 키보드의 경우)은 아포스트로피 키의 오른쪽에 있습니다. Enter은 키패드의 오른쪽 아래 키입니다. 숫자 키패드가없는 랩톱 컴퓨터를 사용하는 경우 fn + Return을 눌러 Enter이 표시됩니다. 샘플 코드 후


편집은

MyCollectionView는 반환/키 입력 흡수하고, 리스폰 더 체인을 그것을 통과되지 게시했습니다. MyCollectionView의 구현이 추가 반환하고 버튼을 누르십시오 : 당신이 MyControllerView 실제로/반품 뭔가 자신을 입력해야하는 경우이 문제가 발생할 수 있습니다

- (void)keyDown:(NSEvent *)theEvent { 
// NSLog(@"event: %@", theEvent); 
    if (36 == theEvent.keyCode || 76 == theEvent.keyCode) { 
     //pass return and enter up the responder chain 
     [[self window] keyDown:theEvent]; 
    } 
    else { 
     //process all other keys in the default manner 
     [super keyDown:theEvent]; 
    } 
} 

. 이 경우 [[self window] keyDown:theEvent] 앞에 [super keyDown:theEvent]을 추가 할 수 있습니다.

+0

감사합니다. IB를 사용하여 키 상당을 설정 했으므로이 문제가 아닌 것 같습니다.그러나 잘 알고 있습니다. –

+0

버튼이 파란색으로 바뀌면 반환 키를 기대하고있는 것이 아닙니다. 버튼은 파란색이지만 오른쪽은 입력 한 것입니다. 그것이 나에게 의미가 없기 때문에 나는 뭔가를 놓치고 있어야합니다. 도와 주셔서 감사합니다. –

+0

같은 결과를 가지고있는 setKeyEquivalent : @ "\ r"을 사용하여 코드에서 이것을 처리해 보았습니다. Enter는 응답 하나 반환하지 않습니다. –