2010-07-28 60 views
3

我需要在我的窗口上看到觸摸事件,所以我將UIWindow分類爲使我成爲MYWindow類。我重寫了sentEvent函數來接收窗口上的觸摸事件,並且所有這些工作都很好。我做了以下實現這一目標:自定義UIWindow方向

self.window = [[MYWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
[window makeKeyAndVisible]; 

我現在面臨的問題是,當我這樣做,是這個窗口上的viewControllers將不再轉動。如果我要使用常規的UIWindow,它們都可以像我打算的那樣工作。很明顯,我的設置出了問題。

我一直在尋找通過一個UIWindow頭文件,有一個名爲

- (void)becomeKeyWindow; //override point for subclass, Do Not call directly 

方法我是想實現這個在我的自定義UIWindow類就像我不得不執行的SendEvent:方法?請用這個指向正確的方向。

在此先感謝你們。

回答

4

我想出了問題所在。我在自定義窗口上創建了一個委託,並將其稱爲導致此問題的「委託」。命名爲「aDelegate」解決了這個問題。感謝你的幫助。

+0

+1謝謝,剛剛花了一個多小時調試我的應用程序中的一切來解決這個問題,甚至回到使用XIBs試圖解決,但這是有效的解決方案。我事先調查了UIWindow的繼承鏈,以確保我不覆蓋現有的「委託」屬性,但顯然錯過了某些東西。回想起來,「委託」是一個非常冒險的名字,無論如何都在一個子類中使用。 – thomh 2012-11-06 18:12:31

0

我只是猜測這裏,但我推測這是因爲你做MYWindow的關鍵窗口現在(即使它是透明的),並shouldAutorotateToInterfaceOrientation:UIViewController類,而不是UIWindow的一部分。

所以,即使你可以看到你的其他視圖,他們不會再獲取他們的輪換事件。

而不是將其設置爲UIWindow子類,爲什麼不在UIView上實現那些添加到視圖中需要處理觸摸事件的觸摸事件?你也可以使它透明,只需要在UIViewController級別保持旋轉處理?

+0

我已經劃分UIWindow的原因是我有一個密碼屏幕,如果在屏幕上沒有檢測到任何活動(觸摸),在一段時間後顯示。爲了達到這個目的,我使用了sendEvent函數來檢測任何viewController的觸摸。我不想在我的每個viewController中重複這個相同的代碼。如果我只需要一個viewController上的觸摸事件,我就可以做到這一點。但是,情況並非如此。其他所有功能都稱爲很好。我有進出viewController沒有任何問題。 – Bittu 2010-07-28 16:43:34

+0

你看看你是否也可以傳遞運動事件。蘋果公司對此有一些指導,但我從來沒有這樣做過,所以我不確定是否可以通過加速度計數據以外的其他任何東西,然後您必須自行解釋。 – iwasrobbed 2010-07-28 16:48:13