[英]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.