我在 UIViewController 的 viewDidLoad 中有以下代码:
UIScreenEdgePanGestureRecognizer *edgeRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightEdgeSwipe:)];
edgeRecognizer.edges = UIRectEdgeRight;
[self.view addGestureRecognizer:edgeRecognizer];
目的是在检测到右边缘手势时触发 View 滑入。
-(void)handleRightEdgeSwipe:(UIGestureRecognizer*)sender
{
NSLog(@"Showing Side Bar");
[self presentPanelViewController:_lightPanelViewController withDirection:MCPanelAnimationDirectionRight];
}
但我看到“handleRightEdgeSwipe”函数被触发了多次 - 有时触发了 5 次,这使得应该平滑动画的侧边栏 View 滑入并闪烁多次。
(注意:我尝试触发 View 从 UIButton 出现,它工作正常)。
为什么多次触发右边缘手势,如何解决?
最佳答案
如前所述,当 GestureRecognizer 的状态发生变化时,UIScreenEdgePanGestureRecognizer 会多次调用您的操作。请参阅 UIGestureRecognizer 类的 state 属性的文档。所以,在你的情况下,我相信你正在寻找的答案是检查状态是否“结束”。因此:
-(void)handleRightEdgeSwipe:(UIGestureRecognizer*)sender
{
if (sender.state == UIGestureRecognizerStateEnded)
{
NSLog(@"Showing Side Bar");
[self presentPanelViewController:_lightPanelViewController withDirection:MCPanelAnimationDirectionRight];
}
}
关于ios - UIScreenEdgePanGestureRecognizer 触发多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244690/