나는 연속을 만들어 결국 제스처 인식기는 적어도 하나의 터치가있을 때이를 인식합니다. 내가 UIViewController 하위 클래스의보기에 추가하고 잘 작동합니다! cancelsTouchesInView
과 delaysTouchesEnded
을 모두 false
으로 설정해야한다는 것을 깨닫는 데 오랜 시간이 걸렸습니다. 그렇지 않으면 어떤 식 으로든 실패합니다.
class TouchDownGestureRecognizer: UIGestureRecognizer {
override init(target: AnyObject, action: Selector) {
super.init(target: target, action: action)
cancelsTouchesInView = false
delaysTouchesEnded = false
}
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
state = .Began
}
override func touchesEnded(touches: NSSet!, withEvent event: UIEvent!) {
if numberOfTouches() - touches.count == 0 {
state = .Ended
}
}
override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
if numberOfTouches() - touches.count == 0 {
state = .Cancelled
}
}
override func shouldBeRequiredToFailByGestureRecognizer(otherGestureRecognizer: UIGestureRecognizer!) -> Bool {
return false
}
override func shouldRequireFailureOfGestureRecognizer(otherGestureRecognizer: UIGestureRecognizer!) -> Bool {
return false
}
override func canPreventGestureRecognizer(preventedGestureRecognizer: UIGestureRecognizer!) -> Bool {
return false
}
override func canBePreventedByGestureRecognizer(preventingGestureRecognizer: UIGestureRecognizer!) -> Bool {
return false
}
}
감사합니다. 나는 단지'gestureRecognizer : shouldReceiveTouch :'로 작업하는 것을 결코 얻지 못했지만 커스텀 제스처 인식기가 그 트릭을 수행했다. –