Objective c 聚焦一个NSTextField

Objective c 聚焦一个NSTextField,objective-c,cocoa,Objective C,Cocoa,我有一个NSTextField,如果我点击一个按钮,我想设置它的内容,然后将光标设置在文本末尾的这个textfield上,这样如果有人点击按钮,他就可以开始键入 直到现在我才使用[NSTextField selectText],它选择这个文本字段,但它选择整个文本,因此如果有人刚开始键入,他将丢失文本字段中所有的文本。您将需要执行以下操作: [[self window] makeFirstResponder:[self yourTextField]]; 好吧,我现在发现了:) 在RubyCoc

我有一个NSTextField,如果我点击一个按钮,我想设置它的内容,然后将光标设置在文本末尾的这个textfield上,这样如果有人点击按钮,他就可以开始键入


直到现在我才使用[NSTextField selectText],它选择这个文本字段,但它选择整个文本,因此如果有人刚开始键入,他将丢失文本字段中所有的文本。

您将需要执行以下操作:

[[self window] makeFirstResponder:[self yourTextField]];
好吧,我现在发现了:)

在RubyCocoa,它是:

def select_input_field
    @input.selectText self
    range = OSX::NSRange.new(@input.stringValue.length, 0)
    @input.currentEditor.setSelectedRange range
end

我正在写一个ingame插件,我遇到了类似的问题:

- (void)gotEvent:(NSEvent *)newEvent
{
  [mainWindow makeKeyAndOrderFront:self];
  [mainWindow makeFirstResponder:messageField];
  [mainWindow sendEvent:newEvent]; // will forward the typing event
}
这就完成了任务:)

甚至更简单

[yourTextField becomeFirstResponder];

不久前,我做了类似的工作。我的解决方案是为NSTextField部分文本选择写下小类别方法。此方法的工作方式与原始selectText:does类似(将焦点设置为control)


使用此方法,您可以将文本选择放置在您想要的位置,然后立即开始键入。

此方法也会选择文本:-/问题是,此方法会选择所有文本,如果您开始键入预填充的文本,则会被覆盖,我希望将光标设置在文本后面。此外,10.5中不推荐使用此方法,如果您阅读此方法的文档,它会非常清楚地说明“永远不要直接调用此方法”。很好,Alan,我刚刚删除了一系列调用,这些调用导致使用10.8 SDK直接使用becomeFirstResponder时出现异常。您从何处调用gotEvent?
[yourTextField becomeFirstResponder];
@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