[英]focus a NSTextField
我有一個NSTextField,我想設置它的內容,如果我點擊一個按鈕,而不是將光標設置在文本末尾的文本字段上,所以如果有人點擊按鈕,他就可以開始輸入。
到目前為止,我使用[NSTextField selectText]它選擇了這個文本字段,但是它選擇了整個文本,所以如果有人剛剛開始輸入,他就會丟失所有在文本字段中的文本。
甚至更容易
[yourTextField becomeFirstResponder];
好的我現在發現了:)
- (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]];
我正在寫一個游戲插件,我遇到了類似的問題:
- (void)gotEvent:(NSEvent *)newEvent
{
[mainWindow makeKeyAndOrderFront:self];
[mainWindow makeFirstResponder:messageField];
[mainWindow sendEvent:newEvent]; // will forward the typing event
}
這樣做的工作:)
前段時間我做了類似的任務。 我的解決方案是寫下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
使用此方法,您可以將文本選擇放在所需的位置,然后立即開始輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.