【问题标题】:NSTextField nextKeyView is ignoredNSTextField nextKeyView 被忽略
【发布时间】:2016-07-21 07:23:47
【问题描述】:
  • 虽然我设置了NSTextField的nextKeyView,但是焦点是通过不同的NSTextField获得的

  • 试过“自动重新计算视图循环”选中/取消选中

  • 切换“全键盘访问”

  • 也尝试在

  • 中捕获标签

代码

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

        BOOL result = NO;

        if (commandSelector == @selector(insertTab:)) {

            // tab action:
            result = NO;

        }

        return result;
    }

那里返回是/否,累了将下一个响应者设置为

[self.window makeFirstResponder:self.nextKeyView]

没有成功

【问题讨论】:

  • 按下制表键时self.nextKeyView 是否正确?后退制表符(shift-tab)有效吗?
  • 是的,这肯定是正确的

标签: objective-c macos cocoa nstextfield


【解决方案1】:

选择NSTextFieldselectText:,同时捕获“选项卡”(注意你必须返回YES,这意味着你正在处理选项卡)......你不能完全依赖nextKeyView

把它放在你的NSTextField子类中并链接nextKeyView

- (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector
{
    BOOL result = NO;

    if (commandSelector == @selector(insertTab:)) {

        // tab action:
        // always insert a tab character and don’t cause the receiver to end editing
        if ([self.nextKeyView isKindOfClass:[NSTextField class]]) {

            [(NSTextField *)self.nextKeyView selectText:self];
            result = YES;

        } else {

            //[textView insertTabIgnoringFieldEditor:self];
            result = NO;

        }

    }

    return result;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2016-06-05
    • 2014-02-25
    • 2011-05-09
    • 2015-02-08
    • 2011-03-27
    • 2010-11-19
    相关资源
    最近更新 更多