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
属性。
我将视图控制器呈现为表单 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
属性。