IOS / Objective-C / Storyboard: распознаватель жестов, доступный для всего приложения с панелью вкладок Возможно? - PullRequest
0 голосов
/ 14 сентября 2018

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

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

Можно ли установить на панели вкладок распознаватель жестов смахиванием вверх, который можно отличить от нажатия на кнопку? Как бы я мог различить эти два действия? Некоторая модификация следующего?

-(void)createUpwardSwipeTabBAr {
    UISwipeGestureRecognizer *upGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleHelp:)];
    leftFilter.direction = UISwipeGestureRecognizerDirectionUp;
    [leftFilter setNumberOfTouchesRequired:1];
    leftFilter.delegate = self;
    [_tabBarController addGestureRecognizer:upwardSwipe];

}

-(void)handleHelp:(UIGestureRecognizer*)recognizer {
[self launchHelpVC];
}

Заранее спасибо за любые предложения.

1 Ответ

0 голосов
/ 14 сентября 2018

У меня есть простая идея. Это может сработать.

Отредактируйте класс, в котором вы хотите обрабатывать пролистывание, и присоедините распознаватель жестов к корневому представлению.

{
  guard let parentView = UIApplication.shared.windows.first else {return}
  // create the recognizer and attach it
  UISwipeGestureRecognizer *upGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleHelp:)];
  ...
  parentView.addGestureRecognizer(upwardSwipe)
}

- (void)handleHelp:(UIGestureRecognizer*)recognizer {
   [self launchHelpVC];
}

Я смешал Swift и ObjC, но это просто. UIWindow является производным от UIView, поэтому оно должно обрабатывать все жесты, которые не обрабатываются и не передаются в следующее представление в иерархии.

Другой, возможно, лучший подход - добавить распознаватель жестов в tabBar вместо _tabBarController. Используйте _tabBarController.tabBar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...