2015-07-13 2 views
0

Я пытаюсь создать UIScrollView, который выполняет действие по scrollViewWillBeginDragging, а также распознает левый и правый щелчки, используя UISwipeGestureRecognizer. Когда я использую функцию scrollViewWillBeginDragging, я получаю желаемый результат по левому экрану, но моя функция не может определить, выполняю ли я правый или левый салфетки. Если я устанавливаю detailScrollView.userInteractionEnabled = false, gestureRecognizer выполняет правильно, но представление больше не прокручивается. Вот мой код:Получите пользовательский ввод от UISwipeGestureRecognizer и UIScrollView

override func viewDidLoad() { 
    super.viewDidLoad() 

    var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:")) 
    var rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:")) 

    leftSwipe.direction = .Left 
    rightSwipe.direction = .Right 

    view.addGestureRecognizer(leftSwipe) 
    view.addGestureRecognizer(rightSwipe) } 


func gestureRecognizer(UIGestureRecognizer, 
    shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer) -> Bool { 
     return true 
} 

func scrollViewWillBeginDragging(scrollView: UIScrollView) { 
    if (counter < buttons.count) { 
     serialSelected(buttons[counter]) 
     counter += 1 
    } 
} 

func handleSwipes(sender:UISwipeGestureRecognizer) { 
    if (sender.direction == .Left) { 
     println("Swipe Left") 
     var labelPosition = CGPointMake(self.contentView.frame.origin.x - 50.0, self.contentView.frame.origin.y); 
     contentView.frame = CGRectMake(labelPosition.x , labelPosition.y , self.contentView.frame.size.width, self.contentView.frame.size.height) 
    } 

    if (sender.direction == .Right) { 
     println("Swipe Right") 
     var labelPosition = CGPointMake(self.contentView.frame.origin.x + 50.0, self.contentView.frame.origin.y); 
     contentView.frame = CGRectMake(labelPosition.x , labelPosition.y , self.contentView.frame.size.width, self.contentView.frame.size.height) 
    } 
} 

ответ

1

Согласно исходному коду, то shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer никогда не вызывается.

// Make yourself a delegate 
class yourClass: parentClass, UIGestureRecognizerDelegate 

// reference the delegate 
leftSwipe.delegate = self 
rightSwipe.delegate = self