2012-10-22 5 views
1

나는 사용자 동작에 따라 편집 가능으로 설정하는 NSTextField을 가지고 있습니다. 사용자가 창 안의 텍스트 필드 외부를 클릭하면 편집을 끝내고 싶습니다.NSTextField : 사용자가 텍스트 필드 외부를 클릭 할 때 끝내기 편집

단순 해 보이지만 작동하지 않습니다. controlTextDidEndEditingtextDidEndEditing을 구현했는데, 특히 첫 번째 응답자 상태를 허용하지 않는 사용자 인터페이스 요소를 클릭 할 때 행운은 없습니다.

답변

0

NSView의 서브 클래스를 작성하고 아래 메소드를 작성하고 nib 파일의 NSWindow에있는 NSView의 클래스를 해당 서브 클래스로 변경할 수 있습니다.

- (void)mouseDown:(NSEvent *)event 
    { 
     [text setEditable:NO]; 
     NSLog(@"mouseDown"); 
    } 
+0

나는 그것에 대해 생각해 보았다. 문제는 윈도우의 UI가 더 많은 컨트롤을 포함하며, 그 중 일부는 이미 mouseDown :을 처리한다는 것입니다. 이러한 메서드의 동작을 수정할 수는 없습니다. 어디서 처리 되더라도 모든 마우스 이벤트를 차단할 수있는 방법이 있습니까? – Mark

+0

hittest를 시도해 보셨나요? 그러면 모든 마우스 이벤트가 차단됩니다. –

0

약간 더러울 수 있지만 "텍스트 필드 외부"영역에 큰 투명 버튼을 만들 수 있습니다. 편집이 시작되면 표시하고 편집이 끝나면 숨 깁니다. 사용자가이 버튼을 탭하면 편집을 중지하고 버튼을 숨 깁니다.

빠른 솔루션이 필요할 때 나를 위해 해결되었습니다.

관련 문제