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