UIScreenEdgePanGestureRecognizer не работает в пользовательском расширении клавиатуры

проблема

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

пример

@implementation KeyboardViewController // A subclass of UIInputViewController
...
-(void)viewDidLoad {
  ...
  UIScreenEdgePanGestureRecognizer *gestureRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture)];
  [gestureRecognizer setEdges:UIRectEdgeAll];
  [self.view addGestureRecognizer:gestureRecognizer];
}

- (void)handleGesture
{
  NSLog(@"gesture handled");
}

Скачать мой пример проекта на Github

Возможное решение

Если я изменю это на UIPanGestureRecognizer или UITapGestureRecognizer я вижу gesture handled в консоли. Я мог бы использовать UIPanGestureRecognizer он принимает только те жесты, которые начинаются у края экрана.

Клавиатура киви использует обходной путь, как это.

Предостережение: UIPanGestureRecognizer работает только если self.view имеет цвет фона.

1 ответ

Решение

Насколько я знаю, несмотря на название края, UIScreenEdgePanGestureRecognizer"s edges должен быть установлен на одном ребре. UIRectEdgeAll не будет работать, вы должны создать UIScreenEdgePanGestureRecognizer для каждого ребра вы не можете ИЛИ ребра вместе.

Другие вопросы по тегам