我有一个macOS应用程序,在升级到Xcode 8.1之前一直运行良好。
该应用程序使用NSOpenPanel
打开对话框,以允许用户选择图像。当我选择图像并选择“打开”时,会出现以下错误:
2016-11-03 10:23:25.589283 PA Places Data[9008:265214] [Layout]检测到NSTextField丢失的约束条件:0x6000001e3a00。由于没有足够的约束条件来完全定义尺寸和原点,因此无法放置它。添加缺失的约束条件或将translatesAutoresizingMaskIntoConstraints设置为YES,系统将为您生成约束条件。如果在macOS 10.12及更高版本上手动布局此视图,则可以选择不从覆盖中调用[super layout]。请在DETECTED_MISSING_CONSTRAINTS上设置断点以进行调试。此错误仅记录一次。
然后打开的对话框会冻结,无法解除。
按照建议,我为DETECTED_MISSING_CONSTRAINTS
设置了断点,并发现代码中的myPopup.runModal()
停止执行:
func happyAlert(message: String, info: String) {
let myPopup: NSAlert = NSAlert()
myPopup.messageText = message
myPopup.informativeText = info
myPopup.alertStyle = NSAlertStyle.informational
myPopup.addButton(withTitle: "OK")
myPopup.runModal()
}
这个警报通知用户,图像是否通过了各种验证检查。
以前发生的情况是,选择图像后,NSOpenPanel
关闭,然后警报出现且没有任何问题。
现在我遇到了关于NSTextField约束的错误,但我不明白为什么它们会涉及到这里,特别是因为Xcode没有标记底层视图中的任何自动布局问题。
有人能解释一下可能发生了什么和/或进一步调试的策略吗?我的经验有限,我感到困惑。