将占位符文本添加到文本字段时,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】:以编程方式添加约束非常重要。您不应将它们添加到布局方法回调之一(如layoutSubviews
或viewdidLayoutSubviews
)。那是因为在调用这些方法之后,系统预计会有视图布局,如果在视图已经布局之后添加新的约束并且需要新的布局周期,则会出现崩溃。
我建议您考虑另一种可以添加新约束的方法。如果没有其他适合您的地方,请尝试在调用 super
方法之前添加约束,而不是相反。
所以是这样的:
- (void)viewDidLayoutSubviews
// Add constraints
[super viewDidLayoutSubviews];
如果您可以发布一些代码,我将非常乐意为您提供进一步帮助:)
【讨论】:
以上是关于将占位符文本添加到文本字段时,iOS 7 中的应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章