离开场景时删除UIGestures

时间:2014-12-05 00:06:45

标签: swift sprite-kit uigesturerecognizer

我的游戏中的UIGestures存在问题 在gamecene,它们工作得很完美,但当我移动到另一个场景时,UIgestures保持活动状态,如果我使用它们(滑动)而不是崩溃。

我知道我必须在Gamescene文件中使用willmovefromview方法,但是已经工作了2天但仍然没有工作..

这是我的viewcontroller文件:(请参阅手势功能和手势识别器的注释)

import UIKit
import SpriteKit
import AVFoundation


class GameViewController: UIViewController, UITextFieldDelegate{

//gesture functions
func swipedRight(sender: UISwipeGestureRecognizer){
    let skView = view as SKView
    let gameScene = skView.scene as GameScene
    gameScene.swipedRight1(sender)
}
func swipedLeft(sender: UISwipeGestureRecognizer){
    let skView = view as SKView
    let gameScene = skView.scene as GameScene
    gameScene.swipedLeft1(sender)
}
func swipedDown(sender: UISwipeGestureRecognizer){
    let skView = view as SKView
    let gameScene = skView.scene as GameScene
    gameScene.swipedDown1(sender)
}
func swipedUp(sender: UISwipeGestureRecognizer){
    let skView = view as SKView
    let gameScene = skView.scene as GameScene
    gameScene.swipedUp1(sender)
}


override func viewDidLoad() {
    super.viewDidLoad()

    let skView = view as SKView
    skView.multipleTouchEnabled = false
    scene = GameMenuScene(size: skView.bounds.size)
    //scene.scaleMode = SKSceneScaleMode.ResizeFill
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.presentScene(scene)

//Gesture recognizers
    let swipeRight:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedRight:"))
    swipeRight.direction = .Right
    view.addGestureRecognizer(swipeRight)

    let swipeLeft:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedLeft:"))
    swipeLeft.direction = .Left
    view.addGestureRecognizer(swipeLeft)

    let swipeUp:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedUp:"))
    swipeUp.direction = .Up
    view.addGestureRecognizer(swipeUp)

    let swipeDown:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedDown:"))
    swipeDown.direction = .Down
    view.addGestureRecognizer(swipeDown)    
}

override func viewDidLayoutSubviews() {
}


override func prefersStatusBarHidden() -> Bool {
    return true
}

}

PS:我的应用程序是从一个menucene开始的,并且滑动只能在gamescene上激活,所以我认为我也必须使用didmovetoview方法。

以下是我的gamescene文件中的didmovetoview方法和willmovefromview方法:

  override func didMoveToView(view: SKView) {

}
override func willMoveFromView(view: SKView) {

}

谁会帮助我? 提前致谢

2 个答案:

答案 0 :(得分:0)

override func willMoveFromView(view: SKView) {
   for recognizer in self.view.gestureRecognizers! {
       self.view.removeGestureRecognizer(recognizer)
   }
}

答案 1 :(得分:-1)

self.view.gestureRecognizers=nil; 

它对我有用。