【发布时间】:2014-10-07 20:28:24
【问题描述】:
我在 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 显示的视图,它工作正常)。
为什么会多次触发右边缘手势,我该如何解决?
【问题讨论】:
-
如果你想让它移动,而不是用你的手指拖动,你应该使用 UISwipeGestureRecognizer 代替。它识别单个事件而不是连续运动。
-
@rdelmar 我只想在边缘滑动时触发。如何在右边缘使用 UISwipeGestureRecognizer?
-
action方法中,需要查看locationInView:的值,只有该位置的x值在你想要的区域内才会触发action。
标签: ios objective-c uigesturerecognizer