2010-07-16 7 views
1

뷰 (NSButton)가 포함 된 툴바 아이템이 있고 뷰의 타겟이 nil으로 설정되어 있기 때문에 액션을 트리거 할 때 리스폰 더 체인을 검색 할 것입니다. 그래도 첫 번째 응답자에 대해 유효성을 검사하는 방법을 시도하는 데 문제가 있습니다.FirstResponder에 대해 View로 NSToolbarItem 확인하기

NSToolbarItem을 서브 클래 싱하고 -(void)validate을 구현했습니다. 내가 찾은 참조는 [[[self view] window] firstResponder]을 호출 한 다음 응답자 체인이 NSToolbarItemValidation 또는 NSUserInterfaceValidations을 구현하고 적절한 유효성 검사 메소드를 호출하는지 확인한 다음 첫 번째 응답자를 가져올 수 있어야한다고 말합니다.

그러나 [[self view] window]을 호출하면 창으로 nil이 반환되므로 첫 번째 응답자를 검색 할 수 없습니다.

차이가 있는지 확실하지 않지만 코드에 쓰는 대신 XIB에서 도구 모음을 만들고 있습니다.

NSToolbar.h에서 찾고있는 ivar가 포함 된 창을 참조하므로 [[[self toolbar] valueForKey:@"window"] firstResponder]을 호출하여 첫 ​​번째 응답자를 찾을 수 있습니다.하지만 이는 약간의 해킹이며 문서화 된/stabler를 사용하는 것을 선호합니다.

답변

0

수동으로 확인하지 마십시오. 응용 프로그램은 YES를 반환하는 항목을 찾을 때까지 유효성 검사가 필요한 각 메뉴 항목이나 도구 모음 항목에 대해 응답자 체인의 각 개체에 대해 -validate (또는 해당 변형)를 호출합니다 (각 메뉴 나 도구 모음 항목의 동작을 지원한다는 의미).), 찾지 못했습니다. 찾으면 도구 모음 항목 또는 메뉴 항목이 사용 가능하게됩니다. 그렇지 않은 경우 사용할 수 없습니다. 적어도 그것은 일반적인 이론입니다.

+0

뷰가 포함 된 NSToolbarItem 인스턴스의 경우 -validate 구현을 서브 클래스 화하고 제공해야합니다. 목표가 첫 번째 응답자 (즉,'nil') 일 때 그 메소드를 작성하는 방법을 알아 내려고하고 있습니다. http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Toolbars/Tasks/ValidatingTBItems.html#//apple_ref/doc/uid/20000753-BAJGFHDD – Jablair

관련 문제