简体   繁体   English

从UISwipeGestureRecognizer和UIScrollView接收用户输入

[英]Receive user input from UISwipeGestureRecognizer and UIScrollView

I am trying to create a UIScrollView that performs an action on scrollViewWillBeginDragging and also recognizes left and right swipes using UISwipeGestureRecognizer. 我正在尝试创建一个UIScrollView,它对scrollViewWillBeginDragging执行一个动作,并使用UISwipeGestureRecognizer识别左右滑动。 When I use the scrollViewWillBeginDragging function, I get the desired result on a left swipe but my function cannot tell whether I am performing a right or left swipe. 当我使用scrollViewWillBeginDragging函数时,在向左滑动时可以获得所需的结果,但是我的函数无法告诉我是在执行向右滑动还是向左滑动。 If I set detailScrollView.userInteractionEnabled = false, the gestureRecognizer performs correctly but the view no longer scrolls. 如果我设置detailScrollView.userInteractionEnabled = false,则gestureRecognizer可以正确执行,但视图不再滚动。 Here is my code: 这是我的代码:

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)
    }
}

According to your source code, the shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer is never invoked. 根据您的源代码,从不调用shouldRecognizeSimultaneouslyWithGestureRecognizer:UIGestureRecognizer

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM