【问题标题】:How make custom view and over it's NSButton is clickable in macOS swift?如何使自定义视图及其上的 NSButton 在 macOS swift 中是可点击的?
【发布时间】:2018-11-05 23:24:44
【问题描述】:

我在NSView 中有NSButtonNSViewNSClickGestureRecognizer。现在我可以从具有NSClickGestureRecognizerNSView 获得action。但问题是NSButton 无法点击。

我该如何解决这个问题?

代码:

import Cocoa

class ViewController: NSViewController {

    @IBAction func actionGesture(_ sender: NSClickGestureRecognizer) {

        print("Gesture Clicked!")
    }

    @IBAction func actionButton(_ sender: NSButton) {
             print("Button Clicked!")
    }

}

截图:

项目链接: https://drive.google.com/open?id=1HmbKiqdF9z7SH131IyyfJ21j8KOgabzl

【问题讨论】:

    标签: swift macos nsview nsviewcontroller


    【解决方案1】:

    解决这个问题的最简单方法是安排视图结构,如下所示。所以连接到 NSClickGestureRecognizer 的 View 在按钮后面。

    希望对你有帮助

    【讨论】:

    • 谢谢!但是,NSButton 必须是 subViewCustom View。因为,NSButton 动作是在延迟点击时触发的。但是,我需要它就像正常的 NSButton & Gesture 动作一样。因为按钮约束取决于自定义视图
    • 如果是这样,您可以通过经典方式实现 mouseDown / mouseUp 使 NSView 无需手势识别器即可点击。
    • 我在手势视图上更新了项目链接工作按钮。但是,它只在 parentView 上工作一个视图。我试图找出但不能。如果能够检查,那么请
    • 你做了一些与我描述的不同的事情。您实现了 hitTest 来检查它是否是 NSButton 类或不忽略手势。我的想法是继承 NSView 来实现 func mouseUp(with event: NSEvent) 或 unc mouseDown(with event: NSEvent) 而不使用 NSClickGestureRecognizer。
    • 是的,我最初按照你说的做了。正如你所说,我的问题已经用 NSTracking 解决了。谢谢你的帮助!。现在,我只是想知道为什么它不起作用!如果不能解决,没问题。
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2016-09-06
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多