2016-11-12 121 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) 
} 
} 

显然有些代码已被省略,以保持这篇文章的重点和易于理解。有趣的是,我有时会使用滑动功能来调用,但大多数情况下它不会打印“滑动”或调用成员?.swipe。你可以给我的任何帮助都会很棒。感谢您考虑这件事。

真诚,
肖恩

回答

0

它是不是没有工作的代码示例。这是什么情况下是显而易见的。

您可能在另一个视图中启动了您想要的视图之外的滑动操作,并以您打算的视图结束。

见这种情况下我的回答&样本项目:UISwipeGestureRecognizer doesn't recognize swipe gesture initiated outside the view

如果您有其他元素“吃”的UITouch ES,比如按钮或启用了互动等意见,解释它。

如果你想调试,尝试添加一个UITapGestureRecognizer到您的视图,然后使用

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

您的子视图,看看它在视图中的边界。

+0

尽我所知,我之所以会出现这个问题,是因为我在同一个视图中也有一个平移手势识别器,即使平移是垂直的而且滑动是水平的。我们通过改变设计来解决问题,以便在底部有响应滑动和敲击的按钮。这解决了我们的问题。感谢您提供您的意见。 –