Swift Xcode 8.1出现新的自动布局错误
我有一个macOS应用程序,在升级到Xcode 8.1之前一直运行良好 应用程序将打开一个带有Swift Xcode 8.1出现新的自动布局错误,swift,macos,cocoa,autolayout,nsalert,Swift,Macos,Cocoa,Autolayout,Nsalert,我有一个macOS应用程序,在升级到Xcode 8.1之前一直运行良好 应用程序将打开一个带有NSOpenPanel的对话框,允许用户选择图像。当我选择图像并选择“打开”时,会出现以下错误: 2016-11-03 10:23:25.589283 PA位置数据[9008:265214][布局] 检测到NSTextField:0x6000001e3a00缺少约束。信息技术 无法放置,因为没有足够的约束来完全 定义大小和原点。添加缺少的约束或集合 translatesAutoresizingMaskI
NSOpenPanel
的对话框,允许用户选择图像。当我选择图像并选择“打开”时,会出现以下错误:
2016-11-03 10:23:25.589283 PA位置数据[9008:265214][布局]
检测到NSTextField:0x6000001e3a00缺少约束。信息技术
无法放置,因为没有足够的约束来完全
定义大小和原点。添加缺少的约束或集合
translatesAutoresizingMaskIntoConstraints=是,约束将被删除
为您生成。如果在macOS 10.12上手动布局此视图
稍后,您可以选择不从您的应用程序调用[super layout]
推翻在检测到的\u缺少\u约束上设置断点以进行调试。
此错误将只记录一次
公开的对话随即冻结,不能被驳回
正如建议的那样,我为检测到的\u缺失\u约束设置了一个断点
,并发现执行在该代码中的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没有在底层视图中标记任何自动布局问题
有人能解释一下可能发生的情况和/或进一步调试的策略吗?我的经验有限,对此我感到困惑。在界面生成器中检查您的视图层次结构可能是文本字段位于所有内容之上,而Xcode正试图为其设置约束。否则,也许可以在故事板中添加一些正在发生的事情的屏幕截图。
您是否尝试过将文本字段的宽度和高度设置为从=到>=设置的值?我过去曾遇到过这样一个问题,就是这样一个愚蠢的设置导致了一个类似于此的错误。经过进一步搜索,似乎这个问题可能与我升级到的OS 10.12有关,但上面没有提到。NSAlert:2016-12-19 19:53:32.717529树测试[1668:47124][Layout]检测到缺少的约束也出现了这种情况。无法放置它,因为没有足够的约束来完全定义尺寸和原点。添加缺少的约束,或设置translatesAutoResizengMaskintoConstraints=YES,将为您生成约束。如果此视图在macOS 10.12及更高版本上手动布局,您可以选择不从覆盖中调用[super layout]。在检测到的\u缺少\u约束上设置断点以进行调试。这个错误只会被记录一次。我也有同样的问题,但它与打开的对话框无关。请确保您的问题不存在。@PeterWiley您是否尝试过锚定?myPopUp.TranslatesAutoResizezingMacSkinToConstraints=true