2014-11-27 1 views
0

어떻게 (텍스트 필드 외부를 클릭 누른 키를 입력, 동일한 열 내부를 클릭하지만, 텍스트 필드 등 외부) 텍스트 필드가 편집을 종료 통지를받을NSTableCellView/NSTextField가 텍스트 수정없이 편집 알림을 끝 냈습니까?

나는

- (void)textDidEndEditing:(NSNotification *)aNotification 
{ 
    //some code here 
} 
을 확인 할 수 있습니다

하지만이 알림은 텍스트가 실제로 변경된 경우에만 호출됩니다. 텍스트를 변경하지 않아도 통보를 받아야합니다.

편집 : 첫 번째 응답자가 변경되었다는 알림이 표시됩니다.

아이디어가 있으십니까?

답변

0
창의 firstResponder 상태를 관찰

...

… 
[theWindow addObserver:self forKeyPath:@"firstResponder" options:NSKeyValueObservingOptionOld context:NULL]; 
… 

... 그리고 필드 에디터의 대표 읽기 :

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    if ([keyPath isEqualToString:@"firstResponder"]) 
    { 
    NSResponder *oldResponder =change[NSKeyValueChangeOldKey]; 
    if ([oldResponder isKindOfClass:[NSTextView class]]) 
    { 
     NSTextView *editor = (NSTextView*)oldResponder; 
     NSTextField *textField = (NSTextField*)editor.delegate; 
     NSLog(@"This text field lost the focus: %@", textField.identifier); 
    } 
    } 
} 
+0

텍스트 필드가 집중 될 때이 호출 것 같습니다, 그것은 초점을 푼다하지 않을 때 , 나는 options : NSKeyValueObservingOptionOld'를 설정했지만. 왜 상상할 수 있니? –

+0

if 문의를 호출하지 않거나 뛰어 넘지 않습니까? 중단 점을 첫 번째 'if'로 설정하십시오. –

+0

나는 주석을 달았습니다. 내가 그것을 언급하지 않을 때 아무 것도 없다 ;-) 충분히 이상하지 않습니까? –