2016-11-12 12 views
0

スワイプジェスチャー認識機能を持つSKSceneがありますが、スワイプジェスチャーはほとんど認識されず、理由もわかりません。ここに私のコードは次のとおりです。スワイプジェスチャー認識機能がSKSceneで断続的に動作する

class MyScene: SKScene 
{ 
weak var member: MySceneDelegate? 
var selectedNode = SKSpriteNode() 
var backgroundSprite: MovingBackground! 
var myEmitter = SKEmitterNode() 
var goingUp: Bool = true 
var work: Int = 0 
var i = 0.0 
var decal: SKSpriteNode! 
var startYPosition = 690 //460 is halfway 
var myTimer: Timer! 
var yStart: CGFloat = 0.0 
var count = 0 
var currentVal = 1 
var startTime = Date() 
var xAxisLabelDisplayIncrement = 60.0 
var interval = 5.0 
var intervalCounter = 0.0 
var swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(MyScene.swipe(_:))) 
var swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(MyScene.swipe(_:))) 

override func didMove(to view: SKView) 
{ 
    //self.view?.isUserInteractionEnabled = true 
    let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(MyScene.handlePanFrom(_:))) 
    self.view!.addGestureRecognizer(gestureRecognizer) 
    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(MyScene.handleTap(_:))) 
    self.view!.addGestureRecognizer(tapGestureRecognizer) 
    swipeRight.addTarget(self, action: #selector(MyScene.swipe(_:))) 
    swipeRight.direction = UISwipeGestureRecognizerDirection.right 
    swipeRight.numberOfTouchesRequired = 1 
    self.view!.addGestureRecognizer(swipeRight) 

    swipeLeft.addTarget(self, action: #selector(MyScene.swipe(_:))) 
    swipeLeft.direction = UISwipeGestureRecognizerDirection.left 
    swipeLeft.numberOfTouchesRequired = 1 
    self.view!.addGestureRecognizer(swipeLeft) 
} 
func swipe(_ sender: UISwipeGestureRecognizer) 
{ 
    print("swiped") 
    member?.swipe(direction: sender.direction) 
} 
} 

明らかにいくつかのコードがポイントにこのポストを維持するために省略されていると理解しやすいです。興味深いのは、私はスワイプ関数を時々呼び出すようになっていますが、たいていの場合、スワイプされた(swiped)かメンバーの呼び出しをしません。あなたが私に与えることができるどんな助けも素晴らしいでしょう。この問題を検討していただきありがとうございます。敬具


ショーン

答えて

0

それはこの文脈のが何であるかの作業のコード例のない鮮明ではありません。

意図したもの以外の別のビューでスワイプを開始し、意図したもので終了する可能性があります。あなたはそれを説明する有効な相互作用を持つボタンまたは他のビューのようなUITouch ESを、「食べる」という他の要素を持っている場合UISwipeGestureRecognizer doesn't recognize swipe gesture initiated outside the view

は、このシナリオのための私の答え&サンプルプロジェクトを参照してください。

デバッグしたい場合は、そのビュー内の境界かどうかを確認するためにあなたのサブビューのため

let location = sender.location(ofTouch: 0, in: mysubview) 

を使用して、あなたのビューにUITapGestureRecognizerを追加してみてください。

+0

私が知る限り、私がこの問題を抱えていた理由は、パンニングが垂直でスワイプが水平であったにもかかわらず、同じ視点でパンジェスチャ認識器を持っていたからです。スワイプとタップに反応するボタンが下部にあるようにデザインを変更することで問題を解決しました。それが私たちの問題を解決しました。入力いただきありがとうございます。 –

関連する問題