Как добавить вертикальный жест жестов в приложение iPhone для всех экранов?

Я хотел бы добавить жест в мое приложение, поэтому, когда пользователь выполняет вертикальные нажатия, он запускает метод для чего-то. Салфетка может быть вверх или вниз. Я никогда ничего не делал с жестов, так что это мое первое использование жестов, отличного от того, что включено в UITableView для удаления строк.

Другая проблема заключается в том, что большинство моих экранов являются UITableViews, поэтому пользователь может просто прокручивать UITableView. Поэтому мне интересно, могу ли я использовать два пальца (по вертикали), чтобы обнаружить жест, чтобы запустить код против промаха одного пальца, чтобы прокрутить UITableView?

Спасибо заранее.

Нил

Ответ 1

Это происходит в ApplicationDidLaunch:

UISwipeGestureRecognizer *swipeGesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipedScreen:)] autorelease];
swipeGesture.numberOfTouchesRequired = 2;
    swipeGesture.direction = (UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown);

[window addGestureRecognizer:swipeGesture];

затем выполните

- (void) swipedScreen:(UISwipeGestureRecognizer*)swipeGesture {
   // do stuff
}

Используйте документацию для UIGestureRecognizer и UISwipeGestureRecognizer.

Также, если вы хотите определить направление движения, вам придется настроить два отдельных распознавателя жестов. Вы не можете получить направление салфетки из распознавателя жестов, но только те направления, которые он зарегистрировал для распознавания.

Ответ 2

В swift 4.0, который идет по методу didFinishLaunchingWithOptions приложения AppDelegate:

let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.swipedScreen(swipeGesture:)))
swipeGesture.numberOfTouchesRequired = 2
swipeGesture.direction = [UISwipeGestureRecognizerDirection.up,  UISwipeGestureRecognizerDirection.down]
window?.addGestureRecognizer(swipeGesture)

И действие:

@objc func swipedScreen(swipeGesture: UISwipeGestureRecognizer){
    Swift.print("hy")
}