覆盖内部UIViewController方法,因为内部方法给了我错误

时间:2010-09-14 12:44:59

标签: iphone objective-c cocoa-touch ipad uiviewcontroller

覆盖内部UIViewController方法有什么后果?

[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]给了我一些问题。它将我的框架调整为我不想要的值 有时 。我甚至不知道它取出新帧的值(它接近于我添加它的超级视图的大小,但是偏离了2px)。参考:this question, which I also need some help with.

我尝试在视图控制器中定义一个空的- (void)viewDidMoveToWindow:(UIWindow *)window shouldAppearOrDisappear:(BOOL)flag方法。 Bug消失了。 >。<

有人知道覆盖-viewDidMoveToWindow:shouldAppearOrDisappear:是否可行吗?还是其他一些解决方法?

或者,是否有人知道何时以及为何-viewDidMoveToWindow:shouldAppearOrDisappear:喜欢更改框架尺寸 有时

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果您覆盖该方法,则存在被拒绝的风险,则该文档无法记录。不违反规则的方法是覆盖视图控制器中视图的setFrame:方法。

如果您认为这是一个错误,请将最小的测试用例放在一起并提交给http://bugreport.apple.com,并可能将其上传到我们可以确切了解正在发生的事情的位置。

答案 1 :(得分:2)

对于你问题的“为什么”部分;框架可以在两种情况下自动更改:

  1. 您的ViewController是视图控制器层次结构(Navigation或TabBar)的一部分。在这种情况下,您的父ViewControllers会根据您的视图框架进行操作。
  2. 您的视图允许自动调整大小,父视图会更改大小。这里要注意的是根视图的大小会改变以适应屏幕,导致所有子视图都发生自动调整。
  3. 要在您的案例中找到确切的罪魁祸首,您可以在被覆盖的setFrame:中设置断点。