如何识别游戏包消息窗口?

时间:2010-09-11 01:37:25

标签: iphone objective-c cocoa-touch gamekit game-center

当一个带有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;是什么意思?

3 个答案:

答案 0 :(得分:1)

我只是通过检查窗口是否有GKGameEventView作为子视图来解决这个问题。

答案 1 :(得分:0)

我一直在使用Game Center并添加notification system for achievements。我得到这样的顶窗:

[[UIApplication sharedApplication] keyWindow]

似乎与警报或游戏中心身份验证窗口不冲突。实际上,我的通知会在该窗口下添加,所以我认为其中一个位于您可以访问的任何内容之上的另一层。

答案 2 :(得分:0)

关于你的上一个问题:

  

autoresize = RM + BM是什么?意思?

RM + BM分别是UIViewAutoresizing个面具,UIViewAutoresizingFlexibleRightMarginUIViewAutoresizingFlexibleBottomMargin的简写。如果在Interface Builder中选择UI控件并转到尺寸检查器,则自动调整大小的图形会显示红色的“I-Beams”,其中控件将锚定到其边界视图。如果Autoresizing = RM+BM,则表示您应该看到顶部和左侧锚定梁(I-Beams)为红色,但右侧和底部锚定光束变暗。这实际上意味着右边距和下边距是灵活的,布局管理器可以在渲染视图时自由调整它们。