将地方持有人文字添加到文本字段

时间:2015-04-28 12:35:16

标签: ios objective-c uitextfield autolayout

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

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

  

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

1 个答案:

答案 0 :(得分:0)

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

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

这样的事情:

- (void)viewDidLayoutSubviews {
      // Add constraints

      [super viewDidLayoutSubviews];
}

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