UIScreenEdgePanGestureRecognizer在自定义键盘扩展中不起作用

dmz*_*zza 3 uikit ios ios8 ios-app-extension ios-keyboard-extension

问题

我无法使用a 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");
}
Run Code Online (Sandbox Code Playgroud)

在Github上下载我的示例项目

可能的解决方法

如果我将其更改为a UIPanGestureRecognizerUITapGestureRecognizergesture handled在控制台中看到的.我可以使用UIPanGestureRecognizer只接受在屏幕边缘附近开始的手势.

Kiwi Keyboard使用这样的解决方法.

警告:UIPanGestureRecognizer如果self.view有背景颜色,唯一的作品.

gab*_*ler 8

据我所知,尽管名称边UIScreenEdgePanGestureRecognizeredges必须设置为一个单一的边缘.UIRectEdgeAll不会起作用,你必须UIScreenEdgePanGestureRecognizer为每个边创建一个,你不能将OR边连在一起.