问题 我无法使用UIScreenEdgePanGestureRecognizer识别自定义键盘扩展中屏幕右边缘或左边缘的边缘滑动.我创建了一个新项目来测试它.其他UIGestureRecognizer的工作正常,如下所述. 例 @implementatio
我无法使用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
可能的解决方法
如果我将其更改为UIPanGestureRecognizer或UITapGestureRecognizer,我会看到在控制台中处理的手势.我可以使用UIPanGestureRecognizer,它只接受在屏幕边缘附近开始的手势.
Kiwi Keyboard使用这样的解决方法.
警告:UIPanGestureRecognizer仅在self.view具有背景颜色时才有效.
据我所知,尽管名称边缘,UIScreenEdgePanGestureRecognizer的边缘必须设置为单边. UIRectEdgeAll不起作用,你必须为每个边创建一个UIScreenEdgePanGestureRecognizer,你不能将OR边缘放在一起.