/ / Swift nie wystrzeliwuje dotykuBegan jeśli machnięcie - szybkie, dotkniebegan

Swift nie wystrzeliwuje dotykuBegan jeśli machnięcie - szybkie, dotkniebegan

Witam Mam szybką aplikację, w której za każdym dotknięciem dotykałem funkcji, ale nie chcę, aby dzwonek był wywoływany, jeśli zamiast tego użytkownik przesuwa się. Jak mogę tego uniknąć?

Dotyki rozpoczęły się:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
//function call
}

Trzepnąć:

var Swipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
Swipe.direction = .Up
//Swipe.cancelsTouchesInView = true        did not make a difference
view.addGestureRecognizer(Swipe)

Również nie chcę robić dotknięć Zakończone, ponieważ to powoduje opóźnienie, którego nie mogę mieć

Odpowiedzi:

0 dla odpowiedzi № 1

Zmodyfikuj widok UIViewController jako niestandardową klasę i obsłuż tam te elementy - powinny one zostać odebrane w taki sposób, w jaki próbujesz, ale tylko w klasie UIView.


0 dla odpowiedzi nr 2

Jeśli chcesz oddzielić przeciągnięcia od dotknięć, możesz zrobić to łatwo za pomocą metody delaysTouchesBegan, na przykład:

        let swipeRight:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedRight:"))
swipeRight.direction = .Right
swipeRight.cancelsTouchesInView = true
swipeRight.delaysTouchesBegan = true
view.addGestureRecognizer(swipeRight)


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


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


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

w twoim widokuDidLoad lub didMoveToView (jeśli jesteś w scenie spritekit)

I przygotuj odpowiednio metody:

func swipedRight(sender:UISwipeGestureRecognizer){
print("swiped right")
}

func swipedLeft(sender:UISwipeGestureRecognizer){
print("swiped left")
}

func swipedUp(sender:UISwipeGestureRecognizer){
print("swiped up")
}

func swipedDown(sender:UISwipeGestureRecognizer){
print("swiped down")
}

Następnie możesz kontrolować swoje dotknięcia przy użyciu oficjalnych metod przekazywania, takich jak:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
...// handle your touches..
}