2016-11-12 9 views
0

У меня есть SKScene, в котором есть несколько распознавателей жестов, но жестом салфетки редко признается, и я не знаю почему. Вот мой код:Sweep Gesture Recognizer работает с перерывами в 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» или call member? .swipe. Любая помощь, которую вы могли бы мне дать, была бы фантастической. Спасибо за ваше рассмотрение этого вопроса.

С уважением,
Шона

ответ

0

не ясно, без примера рабочего кода, что контекст этого есть.

Возможно, вы инициируете салфетки в другом представлении за пределами того, что вы намеревались и заканчиваете тем, что вы намеревались.

Смотрите мой ответ & пример проекта для этого сценария: UISwipeGestureRecognizer doesn't recognize swipe gesture initiated outside the view

Если у вас есть другие элементы, которые «съедают» UITouch Э.С., как кнопки или других представлений с взаимодействием с поддержкой, что объясняет.

Если вы хотите отладить, попробуйте добавить UITapGestureRecognizer на ваш взгляд, затем с помощью

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

для ваших подвидов, чтобы увидеть, если его в поле зрения границы.

+0

Насколько я могу судить, причина, по которой я столкнулся с этой проблемой, состояла в том, что у меня также был распознаватель жесты в одном и том же представлении, хотя панорамирование было вертикальным, а прокрутка была горизонтальной. Мы исправили проблему, изменив дизайн так, чтобы в нижней части были кнопки, которые отвечали на удары и краны. Это решило нашу проблему. Благодарим вас за предложение. –