在游戏中弹出GameCenter登陆界面
目前GameCenter的用户验证在6.0之前和之后有不同,两种方式都有弹出GameCenter的登陆验证界面,6.0以前的没什么特别的,调用GKLocalPlayer的authenticateWithCompletionHandler就会弹出对应的登陆窗口。而6.0以后的登陆是将一个块函数传给authenticateHandler,之后块函数会被自动调用,没登陆的时候块函数返回的UIViewController就对应GameCenter的登陆界面。
如何让块函数中返回的viewController在我们的游戏中显示呢?
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
[window addSubview:[viewController view]];
通过以上两句简单的代码就可以显示上述的viewController,但是这边会有一个问题,通过这种方式显示出来的GameCenter登陆界面能显示,也能登陆成功,但是当登陆成功的时候登陆界面并不会自动关闭,同时左上角的取消按钮也不能点击,无法退出登陆界面,只能在登陆界面上登陆操作。
如何才能让viewController在登陆成功以后自动关闭呢?
currentGameCenterController = [[UIViewController alloc] init];
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
[window addSubview:[currentGameCenterController view]];if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0) {[currentGameCenterController presentModalViewController:viewController animated:YES];
} else {[currentGameCenterController presentViewController:viewController animated: YES completion:nil];
}
其实就是在上述的viewController外再套一层UIViewController, 然后通过这个外层的UIViewController控制viewController的显示。这时候当登陆成功以后,登陆界面就会自动关闭了,同时应该还伴随这“welcome back”的提示信息。但是这变化还会有一个问题,登陆成功关闭的是viewController,我们自己创建的UIViewController还在,所以当登陆界面关闭以后虽然是回到了游戏界面,但是应该是无法操作的。
如何关闭上述我们自己创建的UIViewController呢?
GameCenter的authenticateHandler应该是状态监听,当登陆状态变化的时候传给authenticateHandler的块函数又会被调用到,而这次调用返回的是当前用户登陆成功,关闭我们自己创建的UIViewController就可以在这时候做。
if([GKLocalPlayer localPlayer].isAuthenticated)
{if ([[UIDevice currentDevice].systemVersion floatValue] < 6.0) {[currentGameCenterController dismissModalViewControllerAnimated:NO];} else {[currentGameCenterController dismissViewControllerAnimated:NO completion:nil];}[currentGameCenterController.view removeFromSuperview];[currentGameCenterController release];currentGameCenterController = nil;
}
说明: currentGameCenterController是类的一个成员变量。
在游戏中弹出GameCenter登陆界面相关推荐
- DirectX全屏游戏中弹出窗口(转)
一直有人问如何在DirectX全屏游戏中弹出窗口就象金山游侠一样.我答应过要给出原码,只是一直没有时间整理,不过现在总算是弄玩了.代码不长,大致作了些注释,但愿你能看懂:) 按照我的说明一步步作应该就 ...
- android切换账号登录界面,华为游戏切换安卓账号登陆界面
华为手机如何切换游戏账号? 换华为手机账号的方法是点击设置中的华为账号,退出当前账号后再输入新的账号即可,具体操作步骤如下: 1.点击主菜单页面的"设置" 2.点击列表中的&quo ...
- java山寨qq_java图形界面之 山寨QQ登陆界面
要山寨出QQ登陆界面,首先要对java的图形界面有一定的了解.在jdk1.4之前,图形界面所用到的所有类和接口都在javax.awt之下,在其之后就都在javax.swing里了. 关于图形界面的开发 ...
- 解决登陆界面软键盘弹出遮住登陆按钮
android:windowSoftInputMode属性一共同拥有9个取值.各自是: stateUnspecified: 当设置属性为stateUnspecified的时候,系统是默认不弹出软键盘的 ...
- 微信授权登陆界面无法再次弹出,无法用户切换
微信授权登陆界面无法再次弹出,无法用户切换 一开始在项目中总是发现微信登录只在第一次给用户授权,后面微信登录后就不显示授权登录的界面.这样就导致微信用户无法切换,无法进行新用户的授权.查了很久才找到解 ...
- Android实现游戏登陆界面(自动跳转)
0x00:前言 本篇主要介绍用Android Studio实现游戏登陆界面,自动跳转,代码和资源文件我会上传到GitHub上,需要的可以自行下载.登陆界面功能包括记住密码,注册等. 下载链接: htt ...
- 如何实现从登陆界面跳转到游戏大厅界面
登陆界面 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngin ...
- 机房收费系统问题集(2)——移动登陆界面+show出子窗体
安装上机房收费系统样本,连接上数据库,在运行的时候,我很是佩服机房收费系统的高大上 在我亲自敲的时候遇到了下面的问题: (1)登陆界面不能用鼠标移动 在机房收费系统的样本中,登陆界面 ...
- Unity之UI和登陆界面与暂停界面
Unity----UI和登陆界面与暂停界面 接触了Unity制作不管是程序还是游戏都避免不了UI的制作,但是在网上搜的UI制作的学习过程,额-一言难尽,就像是拼图一样在那一块块搜索然后再将它拼装起来, ...
最新文章
- springboot1——第一个springboot程序
- hammer用法 jquery.hammer.js
- 没有回家的等于没过年
- android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解
- 基于JAVA+SpringMVC+Mybatis+MYSQL的健身房管理系统
- arch_version(12) of input model should be 11!
- 车载语音识别问题多 车主都说不靠谱
- linux 7启动xserver,linux7.x下配置nginx开机自启动
- hscan扫描mysql代码_HScan 扫描器
- 深度学习 机器学习 数据集资源汇总
- linux命令 dstat,dstat命令
- Python图像处理丨基于OpenCV和像素处理的图像灰度化处理
- React-Router 刷新后报错 or Cannot GET /detail
- 龙芯cpu linux恢复密码,中标麒麟(龙芯CPU)--忘记root密码怎么修改?
- 产品经理小技术:图片素材随手找,原型设计快又好
- 基于ug的框架断路器抽屉座运动仿真
- 用 FC FOR nexenta 山寨SAN存储
- 陈天桥向私服取经 盛大免费放手一搏
- 关于内网穿透的几种方法
- 计算机中的位运算—正数,负数,原码,反码,补码