尽管已设置操作,但单击分段时仍显示 NSSegmentedControl 菜单

2023-11-24

我的 UI 上有一个带有 4 个按钮的 NSSegmentedControl。该控件连接到一个方法,该方法将根据单击的段调用不同的方法:

- (IBAction)performActionFromClick:(id)sender {
    NSInteger selectedSegment = [sender selectedSegment];
    NSInteger clickedSegmentTag = [[sender cell] tagForSegment:selectedSegment];

    switch (clickedSegmentTag) {
            case 0: [self showNewEventWindow:nil]; break;
            case 1: [self showNewTaskWindow:nil]; break;
            case 2: [self toggleTaskSplitView:nil]; break;
            case 3: [self showGearMenu]; break;
    }
}

段 4 在 awakeFromNib 方法中附加了一个菜单。我希望当用户单击该段时该菜单会下拉。此时,只有当用户单击并按住菜单时,它才会掉落。根据我的在线研究,这是因为关联的操作。

我目前正在解决这个问题,方法是使用一些代码来获取段控件的原点并使用 NSMenu 弹出上下文菜单popUpContextMenu:withEvent:forView但这是相当黑客的,与将菜单下拉到分段控制单元下方的标准行为相比,看起来很糟糕。

有没有一种方法可以让菜单在单击后按应有的方式下拉,而不是执行黑客上下文菜单的操作?


子类 NSSegmentedCell,重写下面的方法,并替换 IB 中的单元类。 (不需要私有 API)。

- (SEL)action
{
    //this allows connected menu to popup instantly (because no action is returned for menu button)
    if ([self tagForSegment:[self selectedSegment]]==0) {
        return nil;
    } else {
        return [super action];
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽管已设置操作,但单击分段时仍显示 NSSegmentedControl 菜单 的相关文章

随机推荐

  • ios url从邮件重定向到应用程序

    是否可以使用通过邮件发送的 URL 来启动我的应用程序 例如 我有用户个人资料 用户想要邀请他们的朋友进入应用程序 他们发送一封电子邮件 其中包含一些网址 例如 通过此链接加入我 http appname sender id 25 some
  • 复制和克隆有什么区别?

    这个问题似乎暗示这只是一个实现细节 memcpyvs 但我找不到任何关于差异的明确描述 Clone专为任意重复而设计 Clone类型的实现T可以执行创建新对象所需的任意复杂操作T 它是一个正常特征 除了在前奏中 因此需要像正常特征一样使用
  • 基于一个代码库/项目创建演示版和完整版应用程序

    我在一个项目中使用 Eclipse 开发了一款 Android 应用程序 它是结构化的 来自 iPhone 因此一个常量定义它是演示版还是完整版 现在我遇到的问题是 每次我想创建演示版本时 我都需要更改常量 但还需要使用不同的包名称制作项目
  • BitBucket:主机密钥验证失败

    我想将远程存储库克隆到本地计算机 我使用了命令 git clone email protected
  • Mac OSX El Capitan 上的 JDK 7/JavaFX 2 应用程序

    我刚刚升级到 El Capitan 在启动在 JDK1 7 0u79 Oracle 提供的最新版本 下运行的自定义 JavaFX2 应用程序时遇到问题 启动应用程序时 我收到此异常 Exception in thread main java
  • Jmeter远程连接抛出“连接拒绝主机”

    我在 unbundu 机器中使用 JMeter 设置了分布式负载测试环境 gt Master 运行JMeter GUI的系统 控制各个slave gt Slave 运行jmeter server的系统 接收来自master的命令并向被测服务
  • 在 Windows 7 下使用 python 3.3 (Anaconda) 构建最小的 cython 文件

    当我尝试在 Windows 7 下使用 Python 3 3 Anaconda 3 构建最小的 Cython 文件 test pyx 时 我收到一个奇怪的错误 C Users myname Test cython gt python set
  • 如何在 Swift 框架中使用 Cocoapods?

    我正在尝试使用 Cocoapods 中的一些库在 Swift 中为 iOS 创建一个新的 Cocoa Touch 框架 但我无法让它工作 我知道有一些关于此的悬而未决的问题 但它们似乎都不能解决我的问题 出于测试目的 我刚刚创建了一个空的
  • 用python求解非线性方程组

    我可以用Python中的参数求解非线性方程组吗 有示例或教程吗 我可以在 Maple 中轻松完成此操作 但我的特定系统的表达式非常大 复制它们非常困难 例子 sigma y x 0 x rho z y 0 x y beta z 0 您应该得
  • 替换模式内所有出现的地方

    我有一个像这样的字符串 some text other text and some other text this should not be replaced but this should 我希望它成为 some text other
  • 使用 Electron 嵌入 Mongodb

    我将 MongoDB 源代码保存在电子源代码中 并使用以下命令运行 MongoDB const app require electron app const child process require child process const
  • Rails:使用回形针防止重复照片上传?

    如果用户尝试使用 Paperclip 将同一张照片上传到 Rails 应用程序两次 是否会引发验证错误 Paperclip 似乎没有提供此功能 我正在使用 Rails 2 3 5 和回形针 明显地 解决方案 或至少其中之一 根据 Beerl
  • 创建一个只有一个对角线的 UIView

    我需要创建一个左边框倾斜的 UIView45度我想知道 有没有办法以编程方式实现这一目标 做CA变换3D在这种情况下帮助我 因为它不是真正的 3D 旋转 Edit 这是一张图片 更多地解释了我所需的输出 如果您只想要没有内容的形状 那么您可
  • gmpxx.h:没有这样的文件或目录

    我刚刚安装了一个全新的 mingw 32 位 下载它来自官方项目页面来自 Sourceforge 我安装了包中的所有内容 所有编译器等等 然后我从下载hereMinGW 的 gmp 我将 gmp 5 0 1 1 mingw32 src ta
  • 显示用户窗体后将焦点设置回应用程序窗口

    当显示用户表单时 运行其Show方法 它不仅显示在屏幕上 而且还获取焦点 例如击键的目的地 比如说 用户窗体是一个定制的工具栏 它是Show开火Workbook Open 但表单本身的使用相对较少 因此我们希望焦点在其出现后立即返回到主应用
  • WPF 元素事件处理程序中的 UI 更新

    WPF 中的 UI 更新存在问题 我有这样的代码 private void ButtonClick EventHandler object sender RoutedEventArgs e Label Visibility Visibili
  • Grails / Groovy - 域对象 - 其属性映射

    如何获取我的域对象之一上仅用户定义属性的键 值的映射 问题是 如果我自己这样做 我会得到我的属性加上类 元类 约束 闭包等 我认为 Grails 可以相当容易地做到这一点 因为它是在脚手架代码中的某个级别完成的 对吗 我自己怎样才能做到这一
  • 循环 PHP 嵌套数组 - 将值提取到刀片视图中 (Laravel)

    我知道关于这个主题有很多问题 但没有一个完全解决这个问题 据我所知 我在 Laravel 项目中有一个 PHP 数组 仅供参考 是通过 Guzzle 响应返回的 PHP 数组 users array 2 error gt bool fals
  • ApplicationException 或创建自定义异常?

    在我的文件存储库中 当InsertFile 方法称为 当上传文件大小超过限制时 当超出存储容量时 目前我只是抛出一个ApplicationException与相关消息 public void InsertFile HttpPostedFil
  • 尽管已设置操作,但单击分段时仍显示 NSSegmentedControl 菜单

    我的 UI 上有一个带有 4 个按钮的 NSSegmentedControl 该控件连接到一个方法 该方法将根据单击的段调用不同的方法 IBAction performActionFromClick id sender NSInteger