Как добавить жест вертикальной прокрутки в приложение iPhone для всех экранов? - PullRequest
10 голосов
/ 09 января 2011

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

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

Заранее спасибо.

Нил

Ответы [ 2 ]

20 голосов
/ 09 января 2011

Это происходит в 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 .

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

0 голосов
/ 06 ноября 2017

В 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")
}
...