viewWillLayoutSubviews以递归方式调用

时间:2015-01-12 13:24:43

标签: uiviewcontroller uitextfield

我将视图控制器显示为一个表单,其中将有一个表格视图,其中自定义单元格左侧是标签,右侧是文本字段。

表格尺寸(高度)将根据将从表格视图中给出的选项进行的选择动态增加。

因此,对于初始配置,我使用此

- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];

CGRect newBoundsForSuperView=CGRectMake(0, 0, max_view_width,max_view_height);
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.00")==YES)
{
    self.view.superview.bounds=newBoundsForSuperView;
    self.view.superview.center=self.view.window.center;
}
}

当我点击文本字段时,viewWillLayoutSubviews被无限次调用,应用程序被冻结。

任何人都可以指出问题究竟是什么和/或在哪里?

BTW,问题仅出现在iOS 8中。

1 个答案:

答案 0 :(得分:4)

我相信你的问题与设置self.view.superview.bounds有关,导致superview在递归庄园中调用viewWillLayoutSubviews。

查看为iOS7 +设置视图控制器的preferredContentSize属性。