将占位符文本添加到文本字段时,应用程序在 iOS 7 中崩溃



当我向文本字段添加占位符时,我的应用程序在ios7中崩溃,在ios8中同样工作正常。通过自动布局以编程方式添加了控件

正如建议的那样,我在委托方法的末尾添加了[self.view layoutIfNeeded]; viewDidLayout但应用程序仍然崩溃并出现以下异常

断言失败 由于未捕获的异常"NSInternalInconsistencyException"而终止应用程序,原因:"执行 -layoutSubviews 后仍需要自动布局。UITextField 对 -layoutSubviews 的实现需要调用 super。

编程方式添加约束的位置非常重要。不应将它们添加到布局方法回调之一(如 layoutSubviewsviewdidLayoutSubviews )中。这是因为在调用这些方法后,系统应具有视图布局,如果在视图已布局后添加新约束并且需要新的布局周期,则会发生崩溃。

我建议您考虑另一种可以添加新约束的方法。如果没有适合您的其他地方,请尝试在调用 super 方法之前添加约束,而不是相反。

所以像这样:

- (void)viewDidLayoutSubviews {
      // Add constraints
      [super viewDidLayoutSubviews];
}

如果您可以发布一些代码,我非常乐意帮助您进一步:)

最新更新