如何将键盘向上/向下事件从 NSTextField 转发到 NSTableView?

2024-01-25

我试图模拟 Spotlight 在 Yosemite 中的工作方式,其中 NSTextField(搜索字段)在按下向上/向下箭头键并上下移动表格视图选择时始终保持焦点。

我已经实现了以下代码:

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector
{
    if (commandSelector == @selector(moveUp:)) {
        // move up
        return YES;
    } else if(commandSelector == @selector(moveDown:)){
        // move down
        return YES;
    }

    return NO;
}

虽然我可以使用它来向上/向下移动行选择,例如:

[self.tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:currentRow ± 1] byExtendingSelection:NO];

我遇到的问题是,我创建了不应选择的节标题行,并且我已使用 NSTableView Delegate 方法禁用了对这些行的选择:

- (BOOL)tableView: (NSTableView *)tableView shouldSelectRow: (NSInteger)row

但发生的情况是selectRowIndexes:indexSetWithIndex:currentRowbyExtendingSelection:即使委托方法表示无法选择该行,方法也会选择标题行。

看来无论 NSTableViewDelegate 说什么,您仍然可以以编程方式选择行。我想要的是选择跳过标题行。

如果 NSTableView 是firstResponder那么内置键盘控件会跳过标题行。

所以我的问题是有没有办法将向上/向下事件转发到 NSTableView 以便移动选择的内置机制起作用?


以下对我有用,但我不确定是否有任何副作用。

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector
{
    if (commandSelector == @selector(moveUp:)) {
        // move up
        [_tableView keyDown:[NSApp currentEvent]];
        return YES;
    } else if(commandSelector == @selector(moveDown:)){
        // move down
        [_tableView keyDown:[NSApp currentEvent]];
        return YES;
    }

    return NO;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将键盘向上/向下事件从 NSTextField 转发到 NSTableView? 的相关文章

  • 在 Swift 中将进程标准输出重定向到 Apple 系统日志工具

    我正在为 macOS 构建一个启动子进程的 Swift 应用程序 该子进程将有用的信息记录到stdout 我在 Xcode 控制台中看到它 我现在想要实现的是重定向子流程stdout到Apple Log Facility 以便我们可以在部署
  • TextView、iOS 和 OSX 中的彩虹文本

    我正在尝试向我的应用程序添加一些不同的文本颜色以融合到图像中 我收到了很多用户想要彩虹文本颜色并重复的输入 例如这个词 stackoverflow看起来像这样 s red t orange a yellow c green k blue o
  • 在 Mac 上使用 dotnet core/vs code web api 时,Kestrel 出现自签名证书错误

    我正在尝试遵循this https learn microsoft com en us aspnet core fundamentals servers kestrel view aspnetcore 3 1文档中的 替换配置中的默认证书
  • 为什么 SDL 在 Mac 上比 Linux 上慢得多?

    我正在研究使用 SDL2 渲染的单线程图形程序 https github com TurkeyMcMac intergrid 请参阅末尾的较小示例 它既可以在旧的 Linux 机器上运行 也可以在不太旧的 Mac 上运行 Linux 计算机
  • 使用常量 NSString 作为 NSUserDefaults 的键

    我正在使用 NSUSerDefaults 来存储用户首选项 我记得在某处读到过 将键设置为常量是一个好主意 我同意 以下代码是我目前拥有的 NSUserDefaults standardUserDefaults setObject NSNu
  • 如何使用 Objective-C 在 Mac Os X 中模拟 Unicode Char“按键”?

    我想在 Mac OS X 中模拟 unicode 字符发送到前台应用程序 我的意思是我有一个像 a 这样的unicode char 可以包含阿拉伯语 中文等 我想输入它 请注意 我并不是尝试使用虚拟按键或按键代码 只有一个角色 您忠诚的 佩
  • 该捆绑包在 Mac OS X 上无效

    我在将应用程序上传到应用程序商店时遇到问题 每次我将应用程序上传到苹果时 它都会显示 无效的二进制文件 因此我尝试在 Xcode Organizer 中验证存档的应用程序 但收到此错误 该捆绑包无效 Apple 目前不接受使用此版本 SDK
  • 了解 Mac 上的 Oracle Java

    我在 OS X 上使用 Java 很多很多年了 最近当 Apple 停止默认包含 Java 时 我放弃了操作系统并为我安装了它 当然是 Apple 的版本 现在我使用的是 OS X 10 8 并且需要安装 Java 7 因此我刚刚获得了 D
  • vim - 如何删除 netrw?

    我正在测试https github com skwp dotfiles https github com skwp dotfiles 不幸的是它确实安装了很多我不想要的东西 例如 现在 使用空的 vimrc 当我打开 vim 时 我得到 N
  • Sequel Pro / MAMP 在哪里存储本地数据库?

    我通过 Sequel Pro 和 MAMP 在我的计算机上创建了一些数据库 并运行 localhost 来查看它们 但是 我全新安装了 Mac OS Lion 但忘记将数据库备份到 sql 文件 我会定期备份文件 并预装计算机的副本 有谁知
  • 如何在MacOS中的jupyter笔记本中显示所有可能的方法?

    我发现了类似的问题 但没有一个与我的问题相关MacOS 在 Jupyter Notebook 上显示所有可能的方法 https stackoverflow com questions 54636383 showing all possibl
  • 使用 ImageMagick 进行 SVG 转换无法正确应用翻译

    我使用的是 Mac OS X 10 5 的 Mac 我正在尝试使用 ImageMagick 来转换SVG http en wikipedia org wiki Scalable Vector Graphics文件到一个PNG http en
  • 如何在IOS中自定义键盘[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在我的应用程序中为 IOS 创建
  • 如何设置主窗口的位置和大小(以编程方式)?

    我正在使用 OS X 的最新默认项目 10 11 Xcode 7 0 它使用故事板 层次结构如下 Window Controller gt View Controller 我想设置窗口的初始位置和框架大小 显然用户可以更改它 但我希望它以一
  • Mac OS X 文件关联有效,但文件图标未更改

    我使用 Qt 5 3 2 开发了一个 Mac 应用程序 该应用程序处理具有特定扩展名的文件 比方说 xyz 我创建了一个名为 XYZ icns 的图标文件 并将其添加到我的应用程序包资源文件夹中 MyApp app Contents Res
  • 复制文件而不冻结 GUI

    好的 基本上这就是我想做的 我的文件列表中有一个文件列表应用程序包 例如在文件夹中myData 请注意 子文件夹 等中有很多文件 文件夹 我想要复制整个文件树到用户磁盘上的给定位置 我需要有访问每个单独的文件被复制 因为其中一些在复制之前需
  • NSImage 到 NSBitmapImageRep

    如何将 NSImage 转换为 NSBitmapImageRep 我有代码 NSBitmapImageRep bitmapImageRepresentation NSBitmapImageRep ret NSBitmapImageRep s
  • Java 开发人员在 Mac OS 上遇见 Objective-C

    很多年前我就用 C 进行过开发 但现在我主要是一名 Java 软件工程师 鉴于我拥有一部 iPhone 准备下个月购买 MacBook 并且总体上对开始 Mac OS 开发 使用 Objective C 感兴趣 我想我应该提出这个问题 下一
  • OSX 上的 XAMPP 默认文件夹

    入门手册说我可以将文件放入 Applications XAMPP htdocs 文件夹和 Sites 文件夹中 但是当我将文件放入 Sites 文件夹中时 它会出现以下错误 Server error The server encounter
  • AVFoundation (AVPlayer) 支持的格式?没有 .vob 或 .mpg 容器?

    在 Mac 应用程序中使用 AVPlayer 可以全屏播放文件夹中的随机视频 但当我尝试播放 vob 文件或 mpg 文件时 我只会看到黑屏 黑屏的持续时间与视频持续时间一样长 AVFoundation 不支持从这些容器播放吗 我认为既然它

随机推荐

  • 在 pandas 中组合两个时间序列

    如果这明显记录在某处 我深表歉意 但我很难发现它 我有两个带有一些重叠日期 索引的 TimeSeries 我想合并它们 我假设我必须指定从两个系列中的哪一个获取重叠日期的值 为了说明我有 s1 2008 09 15 100 2008 10
  • 数据 URI 的用途是什么?

    为什么资源有时会嵌入到数据 URI 中 而不是使用链接到服务器上作为文件存储的资源的常规 URI 1 减少服务器请求 数据 URI 可用于通过减少获取资源所需的 HTTP 请求数量来减少服务器负载并提高客户端性能 例如 这个 HTML im
  • 注册媒体维基需要管理员批准吗?

    我维护的一个 wiki 受到了垃圾邮件机器人的严重打击 我们没有很多用户 而且我不想让合法用户背负验证码 有没有一种简单的方法可以让管理员确认注册 我浏览了手册 但无法弄清楚如何操作 您可以创建一个新用户权限 例如 批准 允许管理员分配该权
  • 如何在流上重用过滤器和映射的应用程序?

    我有一组从共享类型继承的域对象 即GroupRecord extends Record RequestRecord extends Record 子类型具有特定的属性 即GroupRecord getCumulativeTime Reque
  • 如何在 Android 中的 Activity 上强制执行自定义权限?

    我在android中创建了一个自定义权限
  • Python wand:具有透明度的合成图像

    我正在尝试用 Wand 合成两个图像 计划是将图像 B 放在 A 的右侧 并使 B 的透明度为 60 使用 IM 可以这样完成 composite blend 60 geometry 1000 0 b jpg a jpg new jpg 但
  • json对象访问

    我知道这很简单 但我坚持不下去 我有 json 变量 数据如下 var jsonText user Gender M Minage 19 Maxage 30 MaritalStatusId 0 user maritialtype Does
  • Google 应用程序引擎网站的多个域 - 每个域的分析

    好的 基本上我正在为我工 作的公司测试一种新的营销理念 购买 10 个左右的域名 其中包含与业务相关的关键搜索词 例如 carservice com carmot com hondaservice com 并将它们全部链接到一个网站 托管在
  • 训练 tesseract 后,tessdata 文件夹中应包含哪些文件?

    我使用 tesseract 作为我的 ANPR 应用程序的 OCR 引擎 我已经用车牌字体训练了 tesseract 3 01v 但我需要知道 tessdata 文件夹中应包含哪些文件 我应该使用安装 tesseract 3 01v 的同一
  • 填充轮廓但保留包​​含的区域未填充

    我有这个 python 代码 据说可以填充图像的轮廓 但其中包含的孔未填充 这就是我要的 但这就是我得到的 我尝试指定轮廓层次结构来填充 cv2 但我无法得到我想要的结果 这是我尝试过的 import numpy as np import
  • 在不使用注册策略的情况下将用户添加到 Azure B2C

    我正在尝试开发一个仅具有登录策略的应用程序 据我所知 为 B2C 创建新用户的受支持方法是使用用户页面上的新用户对话框以及图形 API 它是否正确 有我缺少的方法吗 哪种方法是首选方法 当尝试在新用户对话框中创建用户时 用户名格式错误 例如
  • 在 MySQL DB 中存储 Base64 编码值的最佳方法?

    我有一个值想存储在我的数据库中 排序规则对这样的字符串有什么影响吗 YToyOntzOjIwOiJUeXBlX29mX29yZ2FuaXNhdGlvbiI7czoyMDoiTWVtYmVyIG9mIFBhcmxpYW1lbnQiO3M6OD
  • 以编程方式更改 UIButton 的标题颜色,其标题设置为 iOS 7 中的属性

    我已经添加了一个UIButton in my UITableView以编程方式 我的问题是我需要给Letter Spacing以及需要更改按钮标题颜色 我已经给出了Letter Spacing在按钮标题文本中使用以下代码 但标题文本颜色没有
  • 将两张表连接成一张大表

    我有两个具有相同列的表 我需要将一个表的行复制到另一个表的行 以创建一个包含两个表中所有值的大表 现在我正在执行此查询以返回相同的内容 SELECT col1 col2 col3 from Table1 union SELECT col1
  • 复杂的Silverlight TreeView,嵌套层次结构可能吗?

    我有一个看起来像这样的数据库 Locations rootlevel Inspections level1 Areas level1 Inspections level2 因此 每个位置可以有零个或多个检查和零个或多个区域 并且区域可以有零
  • 水平滚动条不适用于选择标签

    我正在尝试在不起作用的选择标签上设置水平滚动条 这是代码
  • Android + Google Fit 数据上传:错误 5002 - 数据类型的名称与包名称不匹配

    在应用程序中 我们将用户活动数据上传到 Google Fit 如下所示 Fitness getSessionsClient context GoogleSignIn getLastSignedInAccount context insert
  • Android Holo 在 CSS 中加载微调器

    我需要知道如何在 CSS 中制作没有图像的 Android Holo 加载旋转器 我尝试过 但我不知道该怎么做 这就是我需要的 动画 就像在 Android 中一样 我怎样才能在没有图像的CSS中做到这一点 没有图像我似乎也无法做到 我成功
  • 如何从python返回多个变量到bash

    我有一个调用 python 脚本的 bash 脚本 起初我只返回一个变量 这很好 但现在我被告知要返回两个变量 我想知道是否有一种干净而简单的方法来返回多个变量 archiveID python glacier upload py arch
  • 如何将键盘向上/向下事件从 NSTextField 转发到 NSTableView?

    我试图模拟 Spotlight 在 Yosemite 中的工作方式 其中 NSTextField 搜索字段 在按下向上 向下箭头键并上下移动表格视图选择时始终保持焦点 我已经实现了以下代码 BOOL control NSControl co