2010-09-14 29 views
2

覆蓋內部UIViewController方法的後果是什麼?覆蓋內部UIViewController方法,因爲內部方法給我錯誤

[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]是給我一些問題。它調整我的框架的值,我不想要有時。我甚至不知道它在哪裏拾取新框架的值(它接近於我添加它的超級視圖的大小,但是以2px偏移)。參考:this question, which I also need some help with.

我試圖在我的視圖控制器限定一個空的- (void)viewDidMoveToWindow:(UIWindow *)window shouldAppearOrDisappear:(BOOL)flag方法。錯誤消失了。 >。 <

有誰知道,如果重寫-viewDidMoveToWindow:shouldAppearOrDisappear:是確定的呢?或者其他一些解決方法?

或者說,沒有人知道什麼時候,爲什麼-viewDidMoveToWindow:shouldAppearOrDisappear:喜歡改變我的幀尺寸有時

在此先感謝。

+0

嗨,我有同樣的問題。你有沒有最終提交了一個錯誤? – kelin 2014-09-08 14:12:39

回答

2

如果重寫您運行的被拒的風險的方法,它是未公開。不違反規則的方法是重寫視圖控制器中視圖的setFrame:方法。

如果您認爲這是一個錯誤,那麼將一個最小的測試用例組合起來並提交給http://bugreport.apple.com,並且可能將其上傳到某處,我們就可以看到發生了什麼。

+0

應用拒絕是我最關心的問題。我將嘗試setFrame覆蓋方法。 – Altealice 2010-09-14 12:59:00

+0

你真棒。謝謝! – Altealice 2010-09-14 13:54:58

+0

我仍然想知道爲什麼viewDidMoveToWindow:shouldAppearOrDisappear:有時會嘗試調整我的框架的大小。 – Altealice 2010-09-14 13:56:14

2

對於你的問題的「爲什麼」部分;框架可在兩種情況下自動改變:

  1. 你的ViewController是一個視圖控制器層次結構(導航或的TabBar)的一部分。在這種情況下,您的父級ViewControllers按照您的視圖框架進行操作。
  2. 您的視圖允許自動調整大小,並且父視圖更改大小。這裏需要注意的是,根視圖的大小被更改爲適合屏幕,導致所有子視圖都會發生自動大小調整。

要找到確切的罪魁禍首,您可以在重寫的setFrame:中設置斷點。

+0

有問題的視圖不是直接添加到視圖控制器的圖層,而是一個子視圖的子視圖。沒有父視圖更改大小。無論如何,我不確定這個問題是否仍然存在,這是在iOS 3.2中遇到的。 – Altealice 2011-06-17 17:36:29

+2

@altealice我只是試圖找到你的情況下的確切的罪魁禍首,因爲我自己經歷了怪事(來自UINavigationController)。我不知道這個問題在最後一個iOS中是否已修復,但根據我對UINavigationController的經驗,如果您的視圖具有視圖控制器(無論在其他視圖中嵌入的深度如何),則可能會出現奇怪的幀chnage。 – 2011-06-19 16:27:04

+0

我明白了。感謝您分享您的調查結果。也許有一天我們會發現它確實是固定的,或者至少在發生這種情況時找到確切的案例。 :) – Altealice 2011-06-22 11:54:27