UISwipeGestureRecognizerDirection распознает только правильный жест

Я пытаюсь добавить жест смахивания влево и вправо в каждую ячейку в моем UITableView. Однако, похоже, никто не ответил на этот вопрос, куда бы я ни посмотрел. Используя это текущее решение, которое рекомендуется, я не вхожу в правильный обработчик жестов.

UISwipeGestureRecognizer* right = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)];
right.direction = UISwipeGestureRecognizerDirectionRight;
[self.tableView addGestureRecognizer:right];


UISwipeGestureRecognizer* left = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)];
left.direction = UISwipeGestureRecognizerDirectionLeft;
[self.tableView addGestureRecognizer:left];

Я создаю два разных распознавателя жестов для своего решения. Однако я никогда не вижу ответа от правильного UIGestureRecognizer. Я не понимаю, почему я никогда не вижу ответа от правого распознавателя жестов, а только от левого.

-(void)swipeLeft:(UISwipeGestureRecognizer*)gestureRecognizer
{ NSLog("You have swiped Left");
}
-(void)swipeRight:(UISwipeGestureRecognizer*)gestureRecognizer
{ NSLog("You have swiped right"); //Never Enter this handler
}

person Nate    schedule 17.06.2015    source источник


Ответы (1)


Используйте этот код...

Я надеюсь, вы не возражаете против его в быстром.

override func viewDidLoad() {
    super.viewDidLoad()

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    self.view.addGestureRecognizer(swipeRight)

    var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeDown.direction = UISwipeGestureRecognizerDirection.Down
    self.view.addGestureRecognizer(swipeDown)
}

func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.Right:
            println("Swiped right")
        case UISwipeGestureRecognizerDirection.Down:
            println("Swiped down")
        default:
            break
        }
    }
}
person nachshon f    schedule 17.06.2015
comment
Хорошо, я понимаю, но единственная разница в том, что у меня есть один обработчик, я пробовал это, и он всегда дает один и тот же UIGestureRecognizer. Поэтому, когда у меня есть один обработчик, распознаватель жестов всегда остается!!! Выдергиваю волосы сейчас. Любые другие идеи, почему я каждый раз получаю один и тот же жест? - person Nate; 17.06.2015