저는 NSTextField가 있습니다. 버튼을 클릭하고 텍스트의 끝에이 텍스트 필드에 커서를 설정하면 내용을 설정하고 싶습니다. 누군가가 버튼을 클릭하여 입력하기 만하면됩니다.NSTextField에 초점을 맞 춥니 다.
지금까지는 [NSTextField selectText]를 사용하여이 텍스트 필드를 선택하지만 전체 텍스트를 선택하므로 누군가 입력하기 시작하면 텍스트 필드에있는 모든 텍스트가 손실됩니다.
저는 NSTextField가 있습니다. 버튼을 클릭하고 텍스트의 끝에이 텍스트 필드에 커서를 설정하면 내용을 설정하고 싶습니다. 누군가가 버튼을 클릭하여 입력하기 만하면됩니다.NSTextField에 초점을 맞 춥니 다.
지금까지는 [NSTextField selectText]를 사용하여이 텍스트 필드를 선택하지만 전체 텍스트를 선택하므로 누군가 입력하기 시작하면 텍스트 필드에있는 모든 텍스트가 손실됩니다.
좋아, 내가 :) 지금
- (IBAction)focusInputField:(id)sender {
[textField selectText:self];
[[textField currentEditor] setSelectedRange:NSMakeRange([[textField stringValue] length], 0)];
}
그것을 발견하고 RubyCocoa에는 다음과 같습니다
def select_input_field
@input.selectText self
range = OSX::NSRange.new(@input.stringValue.length, 0)
@input.currentEditor.setSelectedRange range
end
당신은 이런 식으로 뭔가를 할 것입니다 :
[[self window] makeFirstResponder:[self yourTextField]];
I ingame plugini를 쓰고 있는데, 나는 비슷한 문제가있다 :
- (void)gotEvent:(NSEvent *)newEvent
{
[mainWindow makeKeyAndOrderFront:self];
[mainWindow makeFirstResponder:messageField];
[mainWindow sendEvent:newEvent]; // will forward the typing event
}
이 작업 :
여기서 gotEvent를 호출합니까? – eonist
또는
[yourTextField becomeFirstResponder];
그 문제는 이것이 모든 텍스트를 선택한다는 것입니다. 그리고 미리 채워진 텍스트를 입력하기 시작하면 덮어 쓰게됩니다. 텍스트 뒤에 커서를 놓고 싶습니다. – Jeena
이 메소드는 10.5에서 더 이상 사용되지 않습니다.이 메소드에 대한 문서를 읽으면 '이 메소드를 직접 호출하지 마십시오.'라는 말이 명확하게 나와 있습니다. –
좋은 점, Alan, 10.8 SDK를 사용하여 becomeFirstResponder를 직접 사용하여 예외를 발생시키는 호출을 제거했습니다. –
은 몇 시간 전 내가 비슷한 작업을했다 더 쉽게한다. 내 솔루션은 NSTextField에 대한 부분 텍스트 선택을위한 작은 카테고리 방법을 적어 놓았습니다. 이 메서드는 원래 selectText : do (작업을 제어 할 포커스 설정)와 같은 역할을합니다.
@implementation NSTextField(SelExt)
-(void)selectTextRange:(NSRange)range
{
NSText *textEditor = [self.window fieldEditor:YES forObject:self];
if(textEditor){
id cell = [self selectedCell];
[cell selectWithFrame:[self bounds] inView:self
editor:textEditor delegate:self
start:range.location length:range.length];
}
}
@end
이 방법을 사용하면 원하는 위치에 텍스트 선택을 배치하고 그 직후에 타이핑을 시작할 수 있습니다.
이것은 또한 텍스트를 선택합니다 : -/ – Jeena