2010-12-13 3 views
4

사용자가 입력을 마쳤을 때처럼 텍스트 필드가 첫 번째 응답자를 사퇴 시키려고합니다. 대리자 메서드가 호출되는 있지만 지금 무엇을 작동하지 않는,이 일을하는 올바른 방법은 무엇입니까?NSTextField가 첫 번째 응답자를 사퇴 함

- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor 
{ 
    [fieldEditor resignFirstResponder]; 
    return YES; 
} 

답변

17

:

이 방법이 아닌 NSWindow makeFirstResponder : 메서드를 사용하여 을 만듭니다. 첫 번째 반응자를 꺼내십시오. 절대 이 메소드를 직접 호출하십시오.

이 코드를 수행해야합니다

[myWindow makeFirstResponder:nil]; 
+0

이 아닌 iOS에 속한 모든 클래스가 osx sdk에서 시작되지 않습니다. 충돌을 일으키는 것이지만 다른 문제라고 생각합니다. 문제를 해결하면 해결책이 효과가 있다고 생각합니다. 고맙습니다. – avizzini

+0

문제는 확실히 다른 곳에서 발생합니다. 이것은 * nothing *을 윈도우의 첫 번째 응답자로 만드는 적절한 방법입니다. –

+0

이 함수를 호출하면 윈도우가 컨트롤 컨트롤 : textShouldEndEditing :을 묻는 무한 루프가 발생합니다.이 함수는 makeFirstResponder : ad infinitum을 호출합니다. – SG1

-4

아직 아이폰 프로그래밍 전문가는 오전 없지만 구현해야하는 방법은 다음과 같이 구현 "textFieldShouldReturn"입니다 다음 -resignFirstResponder 방법에 워드 프로세서

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    [theTextField resignFirstResponder]; 
    return YES; 
}

+1

어쩌면 내가 분명히 했어야했는데, 아이폰 애플리케이션이 아니었다. 당신이 보여준 메소드는 Cocoa Touch를위한 UITextField 델리게이트 용입니다. – avizzini

+0

OSX – damithH

0

을 난 당신이 NSControl 위임 방법을 찾고 있습니다 믿습니다

- (void)controlTextDidEndEditing:(NSNotification *)notif 

(쉽게 IB에서 설정) 귀하의 NSTextField 위임이 메소드를 구현 .

그런 요청은

[self.window selectNextKeyView:self] 

일을해야으로, 응답자을 변경합니다.

5
- (void)controlTextDidEndEditing:(NSNotification *)obj { 

    [self.window makeFirstResponder:view]; 
} 

여기서 "보기"는 NSTextView 컨트롤의 부모 NSView입니다.

+0

이것이 맞는 것입니다. 시트 용으로도 작동합니다. –

관련 문제