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

时间:2014-11-06 22:02:43

标签: ios ios8 uikit ios-app-extension ios-keyboard-extension

问题

我无法使用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");
}

Download my example project on Github

可能的解决方法

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

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

警告: UIPanGestureRecognizer仅在self.view具有背景颜色时才有效。

1 个答案:

答案 0 :(得分:7)

据我所知,尽管有名称边缘,但UIScreenEdgePanGestureRecognizer' s edges必须设置为单边。 UIRectEdgeAll无法使用,您必须为每条边创建UIScreenEdgePanGestureRecognizer,您可以将OR边缘放在一起。