创建了一个函数来显示一个带有文本字段的小弹出窗口。弹出窗口正确显示,但文本字段没有。弹出 View Controller 也是动态创建的,这是我尝试过的:
func showLittlePopoverWithMessage(sender: AnyObject, message: String) {
let controller = NSViewController()
controller.view = NSView(frame: CGRect(x: CGFloat(100), y: CGFloat(50), width: CGFloat(100), height: CGFloat(50)))
let popover = NSPopover()
popover.contentViewController = controller
popover.contentSize = controller.view.frame.size
popover.behavior = .transient
popover.animates = true
// let txt = NSTextField(frame: NSMakeRect(100,50,50,22))
let txt = NSTextField(frame: controller.view.frame)
txt.stringValue = message
txt.textColor = NSColor.white.withAlphaComponent(0.95)
controller.view.addSubview(txt)
txt.sizeToFit()
popover.show(relativeTo: sender.bounds, of: sender as! NSView, preferredEdge: NSRectEdge.maxY)
}
所以我的问题是为什么文本字段没有出现。
最佳答案
好吧,伙计们,我自己的错误。文本域太大且位置不佳,因此发送的“消息”不可见。通过以这种方式初始化 NSTextField 修复:
let txt = NSTextField(frame: NSMakeRect(10,10,50,22))
现在按预期工作。很抱歉回答我自己的问题,但我解决了。事实上,我没想到 field 几乎不在视野范围内,所以我将 field 设置为边界,然后我能够看到他的下角。
关于swift - 以编程方式使用 NSTextField 的 NSPopover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43456762/