gpt4 book ai didi

ios - UIScreenEdgePanGestureRecognizer 触发多次

转载 作者:技术小花猫 更新时间:2023-10-29 11:12:28 28 4
gpt4 key购买 nike

我在 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com