2012-09-25 2 views
3

많은 NSTextField가 포함 된 NSPopover를 제공하는 앱을 개발 중입니다. 예상대로 이러한 필드 사이를 탭할 수 있지만 popover는 나타나는 텍스트가 편집 상태가되도록 특정 텍스트 필드를 선택하고 편집하려는 필드가 아닙니다. 프로그래밍 방식으로 (또는 Interface Builder에서) 어떤 텍스트 필드가 popover 모양으로 편집하는지 정의 할 수 있기를 바랍니다. 어떻게해야합니까?외관에 NSPopover 내에서 편집 NSTextField를 지정하십시오.

관련된 다양한 텍스트 필드 모두에 대해 IB 콘센트를 연결하여 적절한 키보기 루프를 설정했고, 내가 먼저 편집하려는 텍스트 필드에 popover의 nextResponder 속성을 연결했지만, popover는 여전히 광산 대신 선호하는 텍스트 필드를 선택합니다. Window Programming Guide은 내가 원하는 화면으로 initialFirstResponder 콘센트를 설정했지만 NSWindow가 아니고 NSPopover는 initialFirstResponder 속성을 가지고 있지 않다고 제안합니다.

NSPopover가 표시 될 때 편집 할 NSTextField를 지정하는 방법이 있습니까?

+0

하지만 한 번 표시의 팝 오버는 창을 _is_. 델리게이트의'popoverDidShow :'에서 NSTextField로부터'NSWindow'를 얻을 수 있었습니까? 그런 다음 그 창을 텍스트 필드로'makeFirstResponder'라고 말합니까? –

+0

@SmilinBrian : 그건 내가 지금 사용하고있는 문제 해결 방법이지만,'-popoverDidShow :'에서 실행하는 문제는 popover의 기본 필드가 선택된 필드로 점프되기 전에 선택되는 짧은 (그러나 눈에 띄는) 기간이 있다는 것입니다. 나는 또한'-popoverWillShow :'를 시도했지만 popover의 창에서 첫 번째 응답자를 변경하는 것은 그 시점에서 작동하지 않는 것 같으므로 변경하지 않습니다. – Tim

+0

실망 스럽지만 유용한 정보. 미안해, 더 이상 도울 수 없어. –

답변

0

나는 IB에서 "편집 가능"대신 "선택 가능"으로 포커스를 갖고 싶지 않은 모든 텍스트 필드를 설정하여이 작업을 할 수 있다고 생각합니다.이 텍스트 필드는 시작하려는 하나의 텍스트 필드를 남겨 두어야합니다 첫 번째 응답자로 그런 다음 popoverDidShow : 메서드에서 모두 다시 편집 가능으로 설정하면 평소와 같이 탭 사이를 이동할 수 있어야합니다.

4

나는 당신이 -makeFirstResponder:을 사용하고 텍스트 필드를 전달한다고 말한 것으로 생각합니다. 이것은 윈도우의 firstResponder을 설정하지만, 이는 initialFirstResponder과 동일하지 않으며, 키 뷰 루프를 존중하기 위해 윈도우는 initialFirstRespondernil 이외의 것으로 설정해야합니다. (Source) 당신이 뭘하려에 약간의 비틀기가 나를 위해 일한 : 나는 테스트를 구축 할 시간이 없어

- (void)popoverWillShow:(NSNotification *)notification 
{ 
    // Set the window's initialFirstResponder so that the key view loop isn't auto-recalculated. 
    [[myField window] setInitialFirstResponder:myField]; 
} 
+1

덕분에 도움이되었습니다. – Joel

관련 문제