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
для каждого ребра вы не можете ИЛИ ребра вместе.