swift - 以编程方式使用 NSTextField 的 NSPopover

标签 swift macos-sierra

创建了一个函数来显示一个带有文本字段的小弹出窗口。弹出窗口正确显示,但文本字段没有。弹出 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)
}

pict of the problem

所以我的问题是为什么文本字段没有出现。

最佳答案

好吧,伙计们,我自己的错误。文本域太大且位置不佳,因此发送的“消息”不可见。通过以这种方式初始化 NSTextField 修复:

let txt = NSTextField(frame: NSMakeRect(10,10,50,22))

现在按预期工作。很抱歉回答我自己的问题,但我解决了。事实上,我没想到 field 几乎不在视野范围内,所以我将 field 设置为边界,然后我能够看到他的下角。

关于swift - 以编程方式使用 NSTextField 的 NSPopover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43456762/

相关文章:

swift - Braintree支付集成: Using Client AuthorizationTokenization Keys

ios - 如何在 Swift 3 中计算或自动调整 UiTableView 的高度

iOS - 如何使用泛型在 Swift 中编写 DecodeHelper 类?

macos - 在 macOS 上删除 App/NSUserDefaults 数据

python - 在 macOS Sierra 中,如何配置 AWS CLI 以使用 Python3.x 而不是操作系统默认的 Python2.7?

swift - 如何修复 Mac 项目中的 main.swift?

ios - MyViewController 是否在窗口层次结构中?

swift - 没有类型注释的参数 swift

macos - 命令行工具不工作 - OS X El Capitan、Sierra、High Sierra、Mojave

amazon-web-services - `Authorization Token has expired` 在 MacOS Sierra 上发出 AWS-CLI