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

Posted

技术标签:

【中文标题】将占位符文本添加到文本字段时,iOS 7 中的应用程序崩溃【英文标题】:Application crashes in iOS 7 when place holder text is added to text field 【发布时间】:2015-04-28 12:35:16 【问题描述】:

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

按照建议,我在viewDidLayout 委托方法的末尾添加了[self.view layoutIfNeeded];,但应用程序仍因以下异常而崩溃

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

【问题讨论】:

你能上传一些代码吗?你用过自动布局吗? 是通过自动布局约束以编程方式添加控件 @puneetha 不要使用 layoutSubViews 在 autolayoutsubview 内部也调用了 [super layoutSubview]。 【参考方案1】:

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

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

所以是这样的:

- (void)viewDidLayoutSubviews 
      // Add constraints

      [super viewDidLayoutSubviews];

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

【讨论】:

以上是关于将占位符文本添加到文本字段时,iOS 7 中的应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

将占位符添加到表格视图单元格上的文本字段

django 将占位符文本添加到表单字段

将占位符添加到 UITextField,如何以编程方式快速设置占位符文本?

将占位符文本添加到 Jquery Tokeninput

如何在标题中的 jqGrid 文本字段中添加占位符?

如何为 UITextField 中的占位符文本设置可访问性特征?