2010-09-11 71 views
1

當帶有GameKit的iPhone應用程序啓動並且設備已經登錄到GameCenter時,屏幕上會出現一條小消息,並沿着「歡迎回來%用戶名!」的方向說。如何識別遊戲包消息窗口?

我發現了以下內容:該消息出現在它自己的UIWindow中,最終將消息滑動並釋放。當消息是在屏幕上,就可以登錄了以下工作:

all windows: ( "<UIWindow: 0x31fc70; frame = (0 0; 320 480); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x31fe60>>", "<UIWindow: 0x3874c0; frame = (0 0; 320 480); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x387590>>" )

我需要區分兩個窗口在一般情況下 - 我需要沿着-(UIWindow *)topNormalWindow功能的線,將返回最頂端的東西窗口不是A)警報或B)遊戲中心消息。我已經有了一個 - (UIWindow *)topNonAlertWindow,它決定了不是一個警報的頂部窗口,但是遊戲包的消息不是,但它也不是(我的目的)一個普通的窗口。

另外,autoresize = RM+BM;是什麼意思?

回答

1

我解決了這個問題,只需檢查窗口是否有GKGameEventView作爲子視圖。

0

我一直在使用Game Center並添加一個notification system for achievements。我得到這樣的頂部窗口:

[[UIApplication sharedApplication] keyWindow] 

似乎與警報或遊戲中心認證窗口衝突。實際上,我的通知在窗口中添加了,所以我認爲其中一個圖層位於任何可以訪問的任何層上。

0

關於你的最後一個問題:

什麼自動調整大小= RM + BM;意思?

RM + BM是爲UIViewAutoresizing口罩,UIViewAutoresizingFlexibleRightMarginUIViewAutoresizingFlexibleBottomMargin,分別簡寫。如果您在界面生成器中選擇一個UI控件並轉至尺寸檢查器,Autosizing圖形會顯示紅色的「I-Beams」,其中控件將錨定到其邊界視圖。如果Autoresizing = RM+BM,這意味着你應該看到頂部和左側的錨梁(工字梁)爲紅色,但右側和底部的梁變暗。這基本上意味着右邊界和底部邊界是靈活的,並且佈局管理器可以在渲染視圖時自由調整它們。