繁体   English   中英

swift mac osx NSButton 直到长按才响应

[英]swift mac osx NSButton is not responding until a long press

我有一个按钮的奇怪问题。 所以我有一个 NSViewController,里面有很多子视图。 当我点击一个按钮时,一个带有点击手势和按钮的新 NSView 被添加到顶部。 但是我不能按其中任何一个,除非单击 2 秒钟然后松开,否则它们不会响应。 我试过禁用持有人的手势,但没有奏效。 有什么建议?

好吧,我们其他人也有。 就我而言,它用于工作表中视图上的按钮,因此“许多子视图”不太可能。 我的工作表视图控制器大约有 100 行。 还在调试...

目前VC如下。 snp.makeConstraints 调用用于 SnapKit(来自 GitHub)

    @objc
class ThreadEditSheetViewController: NSViewController {

    /// The container for the graphics view
    @IBOutlet var sheetView: NSView!

    /// The information packet initialized by the invoking view controller
    var info: ThreadEditInfo!

    /// API
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    /// API
    override func viewWillAppear() {

        guard let gvc = (try? self.bundleLoader(id: "GraphicsViewController")) as? GraphicsViewController else {
            fatalUserAlert(error: AppError.UIConstructionFailure, message: "Can't find GraphicsViewController for ThreadEditSheetViewController")}
        let gv = gvc.view
        self.view.addSubview(gv)

        // Spaces in title text move it left to avoid visual overlap with scroll bar. Don't know how to do it with
        // constraints given the scrolling view
        let done = makeButton(gvc: gvc, title: "done     ", action: #selector(doneEditing(_:)))
        done.snp.makeConstraints{ (make) in
            make.top.equalTo(gv).offset(-5)
            make.right.equalTo(gv).offset(-5)
        }

        let cancel = makeButton(gvc: gvc, title: "cancel", action: #selector(cancelEditing(_:)))
        cancel.snp.makeConstraints{ (make) in
            make.top.equalTo(gv).offset(-5)
            make.left.equalTo(gv).offset(5)
        }

        self.view.becomeFirstResponder()
        super.viewWillAppear()
        return

    }

    func makeButton(gvc: NSViewController, title: String, action: Selector) -> NSButton {
        let button = NSButton(title: title, target: self, action: action)
        let gv = gvc.view
        gv.addSubview(button)
        button.backgroundColor = .clear
        button.setButtonType(.momentaryChange)
        button.isTransparent = true
        return button
    }

    @objc
    func doneEditing(_ sender: Any) {
        self.dismissViewController(self)
    }

    @objc
    func cancelEditing(_ sender: Any) {
        self.dismissViewController(self)
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM