如何使嵌入式视图控制器成为响应者链的一部分?

2024-04-15

我正在使用情节提要开发 Mac 应用程序。我有一个窗口显示NSViewController作为其内容,其中包含一个“容器视图控制器”,其中嵌入了NSSplitViewController.

预期的行为是NSSplitViewController成为响应者链的一部分,这样触发的菜单项toggleSidebar对第一响应者的操作实际上会折叠该项目NSSplitViewController被标记为侧边栏。

然而,这根本不会发生,菜单项仍然被禁用。所以我的问题是,我怎样才能得到NSSplitViewController成为响应者链的一部分?


我注意到也许其中一些解决方案已经起作用,但我改编了一个更通用的答案https://stackoverflow.com/a/30938725/6938357 https://stackoverflow.com/a/30938725/6938357.

我做了一个扩展NSViewController寻找补充目标。适用于NSSplitViewController以及任何一般NSViewController与孩子。

extension NSViewController {

    open override func supplementalTarget(forAction action: Selector, sender: Any?) -> Any? {
        if let target = super.supplementalTarget(forAction: action, sender: sender) {
            return target
        }

        for child in children {
            var target = NSApp.target(forAction: action, to: child, from: sender) as? NSResponder

            if target?.responds(to: action) == false {
                target = child.supplementalTarget(forAction: action, sender: sender) as? NSResponder
            }

            if target?.responds(to: action) == true {
                return target
            }
        }

        return nil
    }
}

如果您只想在单个视图控制器上搜索,请将此实现放在那里。此扩展适用于all NSViewControllers 及其子类。

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

如何使嵌入式视图控制器成为响应者链的一部分? 的相关文章

  • Carthage 更新错误:“GitHub API 请求失败:凭据错误”

    这是我的购物车文件 Kanna HTML parsing library github tid kijyun Kanna gt 1 0 0 Realm database ORM github realm realm cocoa 当我跑步时c
  • swift 中闭包和函数作为参数的区别

    我有将近 4 年的 Objective C 经验 并且是 swift 的新手 我试图从 Objective C 的角度理解 swift 的概念 所以如果我错了 请指导我 在目标 c 中 我们有块 可以稍后异步执行的代码块 这绝对是完全合理的
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • SwiftUI 更新主菜单 [已解决] kludgey

    真正的问题 你如何更新mainMenu在 SwiftUI 中 它真的可以工作吗 我在 SwiftUI 中构建了一个基于 MacOS 文档的应用程序 其中包括所有内置的文件菜单命令 即关闭 保存 复制 重命名 等 在保存文档之前 我会验证结构
  • Xcode 11 无法识别静态库的架构:MacCatalyst(又名 UIKitForMac)

    在对 2019 年 WWDC 公告感到兴奋之后 我尝试使用 Xcode 11 0 beta 针对 MacOS 编译现有的 iOS 应用程序 不幸的是 事情并没有按预期进行 Xcode 说我的静态库是为 架构构建的 为 Mac 版 UIKit
  • SwiftUI - 从 NSObject 继承的 ObservableObject 在 iOS 13 中不会更新

    我知道 这是 无法在 iOS XX 中工作 问题之一 但我完全陷入困境 所以我有一个ObservableObject继承自的类NSObject 因为我需要听委托方法UISearchResultsUpdating class SearchBa
  • 如何生成Mac应用程序的安装包?

    如何为 OS X 二进制文件以及一些配置和脚本文件创建单个安装程序包 最终文件夹应如下所示 任何帮助 将不胜感激 谢谢 如果您希望将各种东西放置在不同的位置 安装程序在这里 文档在那里 支持文件在这里等等 它们也非常适合提供安装体验的可配置
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C
  • 如何从 DTrace 脚本打印 NSString

    This question https stackoverflow com questions 1413623 how do i print a cfstringref in a dtrace action正在问同样的事情 但是当我尝试时
  • 在 iOS 上使用 HEVC 编码器输出视频尺寸巨大

    我有一个项目 目前使用 H 264 编码器在 iOS 上录制视频 我想尝试在 iOS 11 中使用新的 HEVC 编码器来减小文件大小 但发现使用 HEVC 编码器会导致文件大小急剧膨胀 GitHub 上的一个项目显示了该问题 它使用 H
  • skView.ignoreSiblingOrder 在 swift 中的重要性/效率?

    这样做有多重要 高效skView ignoreSiblingOrder true初始化场景时 现在 我将其设置为 true 但由于某种原因 当我从 MainMenu 场景启动 GameScene 时 它 会在我的角色之前加载背景 即使背景的
  • 在 Firebase 中构建聊天应用的数据

    我正在关注 Firebase 指南结构化数据 https firebase google com docs database ios structure data flatten data structures对于聊天应用程序 他们建议的结
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 如何在 Swift Playgrounds 中获得弹出对话框

    我想知道如何在 Swift 中弹出一个对话框游乐场 是的 必须在 Playgrounds 中 我尝试了以下代码 直接来自 AppleDevs 站点 然而 无论我如何尝试 self tag always抛出错误 谁能帮我这个 import U
  • 使用 Cocoa/OSX 合并/堆叠两个图像

    我有一个 CGImageRef 我们称之为原始图像 和一个透明 png 水印 我正在尝试编写一种方法将水印放置在原始内容之上 并返回 CGImageRef 在 iOS 中 我会使用 UIKit 将它们绘制到上下文中 但这在 OSX 中似乎不
  • let/var 如何解决可变性? [复制]

    这个问题在这里已经有答案了 我没有任何问题 我只是想对有关可变性的问题进行一些澄清 在 Objective C 中我们会使用例如NSMutableArray得到一个可变数组和NSArray得到一个不可变的 我对两者的内部运作了解不多 但据我
  • 快速钥匙串更新只有在第二次尝试时才起作用

    您好 我在更新存储在钥匙串中的登录信息方面遇到了 iOS 钥匙串的一个非常奇怪的问题 因此 如果没有保存的凭据 则正确运行保存函数会保存登录信息 如果登录信息已存在并且用户更新了密码 则更新功能仅正确更新密码 但是 如果登录信息存在并且我尝
  • 如何从 Mac OS X 中完全删除 Eclipse(包括设置和插件)?

    我的 Eclipse 与 GAE 损坏并且工作异常 所以我从Application文件夹中删除了Eclipse 但是留下了垃圾 我重新下载了全新的 eclipse 但它以旧设置运行 并且损坏的 GAE 结构仍然存在 如何从 Mac 上完全删
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • UNIX/MacOS 上静态文件的“临时 Web 服务器”?

    是否有一个像小型网络服务器这样的东西 我可以从命令行调用它 只从本地文件系统获取文件并通过特定端口上的 HTTP 为它们提供服务 我希望能够做这样的事情 cd Sites mysite serve 10 0 1 1 8080 这应该会启动一

随机推荐

  • iOS Safari – 如何禁用过度滚动但允许可滚动 div 正常滚动?

    我正在开发一个基于 iPad 的网络应用程序 需要防止过度滚动 使其看起来不像网页 我目前正在使用它来冻结视口并禁用过度滚动 document body addEventListener touchmove function e e pre
  • 将 JPA AttributeConverter 用于布尔 Y/N 字段:“无法呈现布尔文字值”

    我正在实施解决方案here https stackoverflow com a 22368268 26535将 Y N 列转换为布尔值 Basic optional false Column name ACTIVE YN Convert c
  • 使用数字属性的 MVC3 DataAnnotationsExtensions 错误

    我已经安装了 Scott 的 Kirkland DataAnnotationsExtensions 在我的模型中我有 Numeric public double expectedcost get set 在我看来 Html EditorFo
  • 根据磁盘可用空间获取节点IP

    我正在尝试编写一个 Ansible 剧本来检查多个服务器上的磁盘空间 到目前为止 这是我的 Ansible 剧本 hosts all become yes tasks name Check freespace shell df h awk
  • 在第二次编辑后刷新表单[重复]

    这个问题在这里已经有答案了 嘿大家好 我目前正在尝试在更改完成后立即刷新表单 在我的第一个表单上 我按下 创建 按钮 这将打开另一个表单 form2 第二个表单将具有输入字段 并允许您输入填充第一个表单上的组合框的值 在第二个表单上有一个
  • 标题消息就像 Stack Overflow 中一样

    这是我第一次访问堆栈溢出 我看到了一条漂亮的标题消息 其中显示了文本和关闭按钮 标题栏是固定的 非常能吸引访问者的注意力 我想知道你们中是否有人知道获得相同类型标题栏的代码 快速的纯 JavaScript 实现 function Messa
  • openui5:如何在 RowRepeater 中获取当前 JSON 模型元素

    我无法获取绑定到 RowRepeater 元素的当前 JSON 模型元素 对于表和列表 我只需检索当前索引 或多个索引 并根据这些值 指向 JSON 模型中的匹配元素 但是 RowRepeater 元素没有当前索引属性 我觉得我应该能够直接
  • 主题消息可以在activemq中持久化吗?

    我对 JMS 和 ESB 非常陌生 我使用 activemq 作为 JMS 使用 mule 作为 ESB 当我将消息从一个队列转发到另一个队列时 jms 连接器参数 persistentDelivery 为 true 它会在 activem
  • 将部分 Activity/Fragment 保存为图像

    我试图保存我的活动的一部分 没有工具栏和状态栏 我现在拥有的代码可以保存整个屏幕 请参考下图 我现在拥有的代码 llIDCardRootView LinearLayout view findViewById R id ll id card
  • Laravel psr-4 不自动加载

    我有一个在本地运行良好的 Laravel 项目 Mavericks 但 psr 4 下的类未加载到我们的阶段服务器 CentOS 上 每次尝试作曲家更新或运行 artisan 命令时 我都会收到反射 未找到类 错误 我所有的应用程序特定类都
  • 无法将 IBOutlet 连接到 Storyboard

    我最近开始使用故事板为我的 iPad 应用程序创建 iPhone 界面 我已将项目更改为 Universal 而不是 iPad 并在项目摘要屏幕中将所需的故事板分配给其设备 但是当我尝试使用 control drag 将任何元素连接到一段代
  • 如何以编程方式激活“在高 dpi 设置上禁用显示缩放”[重复]

    这个问题在这里已经有答案了 我正在 Visual Studio 2010 上使用 C 开发 Windows 窗体应用程序 我发现如果我使用高 dpi 显示设置 该应用程序会缩放 但是 如果我通过 Windows 资源管理器上的鼠标右键单击菜
  • 在 Visual Studio 2017 中出现未处理的异常后启用编辑

    在 Visual Studio 2017 中出现未处理的异常后如何继续执行 在 2015 及以下版本中 可以通过单击轻松完成此操作Enable Editing它 将调用堆栈展开到异常之前的点 然后就可以编辑执行点 变量和代码 当库抛出异常时
  • 如何使用“here-doc”将行打印到文件?

    基本上 这是我在过去半小时内编程和使用 Google 的结果 试图实现一个简单的事情 从以下位置获取用户输入 STDIN并将它们写入结构化 XML 文件作为输出 下面是我丑陋的代码 bin perl print img URL img lt
  • Akka 流如何不断实现?

    我在用阿卡流 http doc akka io docs akka stream and http experimental 1 0 scala stream index html在 Scala 中进行轮询AWS SQS https aws
  • 在 databrick 上运行时将 PySpark 标准输出和标准错误日志保存到云对象存储

    我正在标准 databricks 集群上运行 PySpark 数据管道代码 我需要保存所有 Python PySpark 标准输出和标准错误消息存储到 Azure BLOB 帐户中的文件中 当我在本地运行 Python 代码时 我可以在终端
  • 如何重新分发使用 Crystal Reports 的 VB 6 应用程序?

    假设目标系统有 Crystal Reports for Visual Studio 2008 我如何将可执行的 VB 6 应用程序与报告文件一起分发 仅移动可执行文件和报告文件是行不通的 我想知道如何创建可再发行包 我们使用CR10 我的建
  • 优化子查询选择每组最后一条记录

    我有这个查询 它是一个依赖查询并且需要很多执行时间 SELECT u id u user name ifnull select longitude from map where user id u id order by map id de
  • Django QuerySet 不返回任何内容

    我有一个国家 地区列表 例如 它们都有自己的网址 www example com al 每个国家 地区都有一个城市列表 但 object list 为空 My View class CityOverview generic ListView
  • 如何使嵌入式视图控制器成为响应者链的一部分?

    我正在使用情节提要开发 Mac 应用程序 我有一个窗口显示NSViewController作为其内容 其中包含一个 容器视图控制器 其中嵌入了NSSplitViewController 预期的行为是NSSplitViewController