在Spritekit中使用横向渲染Game Center Modal视图控制器时没有键盘

时间:2014-07-05 09:46:08

标签: ios iphone keyboard swift gamekit

我的应用程序正在运行Spritekit,仅用于横向方向,我无法解释为什么当我在游戏中心提供用于验证玩家身份的模态视图时,键盘丢失了。

这是我目前的代码。

class GameViewController: UIViewController, ADBannerViewDelegate, GKGameCenterControllerDelegate {
var gameCenterEnabled: Bool = false
var initialized: Bool = false
let leaderBoardIdentifier: String = "squareBeatLeaderboard"
@IBOutlet var bannerView: ADBannerView!

override func viewWillLayoutSubviews()  {
    super.viewWillLayoutSubviews()
    // Configure the view.
    if initialized == false {
        let skView = self.originalContentView as SKView
        let scene = GameScene.sceneWithSize(CGSize(width: self.originalContentView.frame.size.width, height: self.originalContentView.frame.size.height))
        skView.ignoresSiblingOrder = true
        scene.scaleMode = SKSceneScaleMode.ResizeFill

        self.authenticateLocalPlayer()

        skView.presentScene(scene)
        initialized = true
    }
}

func authenticateLocalPlayer() {
    let localPlayer = GKLocalPlayer()
    localPlayer.authenticateHandler = {(viewController: UIViewController!, error: NSError!) -> Void in
        // handle authentication
        if let viewController = viewController {
            self.presentViewController(viewController, animated: true, completion: nil)
            //keyboard
            NSLog("log the user in") // why the hell is there no keyboard
        } else {
            if GKLocalPlayer().authenticated == true {
                self.gameCenterEnabled = true
            } else {
                self.gameCenterEnabled = false
            }
        }
    }
}

'已初始化'布尔值是为了确保在我的iAd刷新时没有再次加载设置。

当游戏中心登录视图出现时,它看起来很好,除了键盘没有在正确的位置。在iPhone 4S模拟器中,会发生以下情况: http://i.imgur.com/TJjfYq2.png

1 个答案:

答案 0 :(得分:2)

这看起来像旋转错误。就像键盘是从肖像呈现坐标,但视图是在风景中。如果您的应用程序设置为仅在info.plist文件中的横向上,那么您必须以某种方式覆盖它。如果它没有设置,那么我会把它锁定,除非你需要纵向方向。

当您有混合方向但某种方式视图的显示不正确的修复时,通过设置方向蒙版强制视图的横向模式:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/c/tdef/UIInterfaceOrientationMask

这里的教程:

http://makeapppie.com/tag/uiinterfaceorientationmask/

其他代码示例可以在下面的Ray Wenderlich教程中找到。下载入门项目:

http://www.raywenderlich.com/82022/create-game-like-cut-the-rope-using-sprite-kit-swift