viewWillLayoutSubviews 被递归调用

viewWillLayoutSubviews is being called recursively

我将视图控制器呈现为表单 sheet,其中将有一个 table 视图,其中包含自定义单元格,左侧有标签,右侧有文本字段。

表单 sheet 大小(高度)将根据 table 视图中提供的选项中所做的选择动态增加。

所以,对于初始配置,我使用这个

- (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 被无限次调用并且应用程序被冻结。

谁能指出and/or问题到底出在哪里?

顺便说一句,这个问题只出现在 iOS 8.

我认为您的问题与设置 self.view.superview.bounds 有关,这导致超级视图以递归方式调用 viewWillLayoutSubviews。

考虑为 iOS7+ 设置视图控制器的 preferredContentSize 属性。