簡體   English   中英

關注NSTextField

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM