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

Posted

技术标签:

【中文标题】UIScreenEdgePanGestureRecognizer 在自定义键盘扩展中不起作用【英文标题】:UIScreenEdgePanGestureRecognizer doesn't work in a custom keyboard extension 【发布时间】:2014-11-06 22:02:43 【问题描述】:

问题

我无法使用 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】:

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

【讨论】:

谢谢。不确定我是否曾经尝试过,但它现在有效。对于任何感兴趣的人,我已经更新了我的示例项目,使用从左右两侧进行的边缘滑动。 github.com/dmzza/ExampleKeyboard/commit/… 天啊,非常感谢,你救了我一天!

以上是关于UIScreenEdgePanGestureRecognizer 在自定义键盘扩展中不起作用的主要内容,如果未能解决你的问题,请参考以下文章