ios – UIScreenEdgePanGestureRecognizer触发多次

ios – UIScreenEdgePanGestureRecognizer触发多次,第1张

概述我在UIViewController上的viewDidLoad中有以下代码: UIScreenEdgePanGestureRecognizer *edgeRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightEdgeSwipe:)];edgeRe 我在UIVIEwController上的vIEwDIDLoad中有以下代码:
UIScreenEdgePanGestureRecognizer *edgeRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightEdgeSwipe:)];edgeRecognizer.edges = UIRectEdgeRight;[self.vIEw addGestureRecognizer:edgeRecognizer];

目的是在检测到右边缘手势时触发视图滑入.

-(voID)handleRightEdgeSwipe:(UIGestureRecognizer*)sender{NSLog(@"Showing SIDe bar");[self presentPanelVIEwController:_lightPanelVIEwController withDirection:MCPanelAnimationDirectionRight];}

但是我看到“handleRightEdgeSwipe”功能被多次触发 – 有时是5次,这使侧边栏视图应该平滑地动画滑入闪光灯多次.

(注意:我尝试触发视图从UIbutton出现,它工作正常).

为什么右边的手势会多次触发,我该如何解决?

解决方法 如上所述,随着GestureRecognizer状态的变化,UIScreenEdgePanGestureRecognizer会多次调用您的 *** 作.请参阅UIGestureRecognizer类的state属性的文档.所以,在你的情况下,我相信你正在寻找的答案是检查状态是否“结束”.从而:
-(voID)handleRightEdgeSwipe:(UIGestureRecognizer*)sender{    if (sender.state == UIGestureRecognizerStateEnded)    {        NSLog(@"Showing SIDe bar");        [self presentPanelVIEwController:_lightPanelVIEwController withDirection:MCPanelAnimationDirectionRight];   }}
总结

以上是内存溢出为你收集整理的ios – UIScreenEdgePanGestureRecognizer触发多次全部内容,希望文章能够帮你解决ios – UIScreenEdgePanGestureRecognizer触发多次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1109224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存