【问题标题】:get current first responder from NSTextField elements从 NSTextField 元素获取当前的第一响应者
【发布时间】:2014-06-23 16:05:47
【问题描述】:

我正在 Xcode 5 中为 MacOSX 开发应用程序

我有一组 NSTextField,它们通过按 TAB 或 Enter 键共享焦点,当我转到最后一个元素时,我也通过按 Tab 将焦点发送到我的 NSWindow,事情是......我想去第一个 NSTextField 再次按 tab 但我不能,这是我的代码

-(BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector{

    NSTextField *textField = (NSTextField *) control;

    if ((commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)) && (textField == self.descripcionBitacoraTextField)) {
        [self.window makeFirstResponder:[[textView window]nextResponder]];

        return YES;
    }
    else if(commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)){
        [self.window makeFirstResponder:[self.contentView viewWithTag:(textField.tag +1)]];

        return YES;
    }

    return NO;
}

在这种情况下,我的最后一个 NSTextField 是 descripcionBitacoraTextField,当我到达那里并再次按 Tab 或 Enter 时,我失去了所有控件的焦点,但我想通过再次按 Tab 来激活它,我想跟踪哪个控件有 FirstResponder控制,但我不知道如何

任何帮助我将不胜感激

【问题讨论】:

    标签: macos nstextfield first-responder


    【解决方案1】:

    只需替换:

    -(BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector{
    
        NSTextField *textField = (NSTextField *) control;
    
        if ((commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)) && (textField == self.descripcionBitacoraTextField)) {
            [self.window makeFirstResponder:nil];
    
            return YES;
        }
        else if(commandSelector == @selector(insertTab:) || commandSelector == @selector(insertNewline:)){
            [self.window makeFirstResponder:[self.contentView viewWithTag:(textField.tag +1)]];
    
            return YES;
        }
    
        return NO;
    }
    

    我只是设置

    [self.window makeFirstResponder:nil]; 
    

    代替你的

    [self.window makeFirstResponder:[[textView window]nextResponder]];
    

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多